版本管理GIT
来源:互联网 发布:应聘软件测试工程师 编辑:程序博客网 时间:2024/05/19 11:48
描述:查看GIT版本分支,回溯代码
基本命令回顾:
git init
git add file //该命令可以将文件添加进跟踪文件,也可以将修改的跟踪文件放进暂存区
git status
git commit -m "提交说明"
初始化干净仓库:
project目录下初始h化仓库并提交后
git clone --bare ./project new.git
首次推送服务器:
采用SSH协议
scp -r new.git root@192.168.0.6:/my/git/new.git
修改提交:
通常修改一个文件后:
git add file
git commit -m 这样进行提交
或
git commit -a 更新并提交
修改最后一次提交:功能,本次提交漏掉文件,或提交信息错误需要重新提交时
git commit -m
git add new_file
git commit --amend
//合并为一次提交
标签:标签是当前commit的对象指针
查看标签:
git tag
新建标签:
git tag -a tag -m 'information'
补打标签:为以前提交的快照补上标签
git tag v1.0 xxxxxxx(哈希值)
标签是本地化操作,所以要推上服务器需要:
git push origin V1.0
推送所有标签(增补标签):
git push origin --tags
推送标签等同于推送指向的commit对象。
查看提交日志:
git log
git log -p 2
比较文件与暂存文件区别
git diff file
远端仓库操作:
克隆源码:
git clone root@192.../../../new.git //当前目录 名字默认为new
显示远程仓库:
git remote -v
添加远程仓库:
git remote add name git://
git remote add name root@192...
//name为新的远程仓库名,和origin一样
推送服务器:
git push origin master
拉取数据:
git fetch name
//会抓取上次克隆或fetch以来,所有更新的数据
//拉取到本地为一个新的分支,需要手动合并
拉取数据并合并:
git pull name
//会自动合并到当前分支,在只有一个分支的情况直接直接拉取即可
//若是多分支,还要设定本地分支跟踪远端具体哪个分支,才能实现合并。
//git clone 的本质就是初始化一个本地master分支并跟踪远程master分支。
分支操作:
创建分支:
git branch is01
切换分支:
git checkout is01
或
git checkout -b is01//创建并切换
分支合并:
git checkout master
git merge is01 //将01合并到吗master
跟踪分支:
首次从远端拉取新分支后,在本地也不能操作该分支,比如拉取的远程分支为origin/fix
本地只能有两个选择:
1.合并到本地当前分支
git merge origin origin/fix
2.创建一个新的分支fix,在刚拉取的分支基础上
git checkout -b new_fix origin/fix
或
git checkout --track origin/fix
版本回溯:
本地回溯到上一版本:即git commit 之前
git reset --soft HEAD^ //HEAD是当前commit对象,^表示其父对象
回溯到暂存文件之前:即git add之前
git reset -q file
此时回到了修改未暂存阶段
回溯到上一版本,并且添加的文件不保存
git reset --hard
注意这个是硬回溯,当前改动的代码是不会保存的。
回到更以前的版本
git reset --soft HEAD^^
git reset --soft SHA值
git branch and merge.
分支:
在GIT初始化仓库时,创建的分支为master,在初此提交时
会创建一个committer指针,指向当前提交对象的文件快照,以哈希值来区分
当再次提交时,提交的对象会包含一个指向上次提交对象的指针(parent).
所谓分支就是指向commit对象的可变指针,每次提交后,都指向最后一次提交的
commit对象。
分支的创建:
:git branch name...
这会在当前commit上新建一个分支,与主分支master一样指向同一个commit对象,
这里需要一个HEAD指针,来区别当前工作的分支,HEAD指向当前工作的分支,
切换分支:
:git checkout name...
如果在新的分支进行了提交,此时的分支指向新的commit,而原来的master指向为提交前的
commit。故回到主分支时,git checkout master.文件内容回到了master所指向的快照
内容,此时又可以在此基础上开发另外的内容。
当回到master分支后,代码推进了又再次提交,此时等若产生了新的分支。
此时的master和name...分支是一种平行关系,父commit都来自未创建分支的快照对象。
合并:
在新的分支提交以后,确保代码稳定后,需要合并到主分支
:git checkout master
切换回主分支
由于新的分支的父对象是master。即name 分支是master分支的下游,此时合并
:git merge name ...
这部称fast forward,只是简单的将master分支向前推进。指向了新分支的commit.
这是因为没有什么分歧。现在可以删除新的分支
:git branch -d name...
合并提交:
祖先不止一个的情况,以三方合并计算做合并策略
冲突合并解决:
在不同的分支修改了统一文件的同一部分。
分支管理:
git branch //所有分支
git branch -v //各个分支最后一次commit信息
git branch --merge/--no-merge //已经合并的分支/相反。
分支未合并会失败,当然也可以强制删除-
- git 版本管理
- git 版本管理
- 版本管理GIT
- xcode git版本管理
- Git 版本管理
- git版本管理
- git 版本管理 工具
- Git版本管理初探
- GIT版本管理 实测
- git 版本管理
- 使用GIT管理版本
- git版本分支管理
- Git-版本管理
- git版本管理
- git版本管理
- git版本管理
- git 版本管理
- git版本管理系统
- Hdu 4502 吉哥系列故事——临时工计划(DP)
- 佃农、狗和狐狸
- mingw gcc的头文件存在结构定义错误!!
- window 问题
- javascript学习笔记1
- 版本管理GIT
- STM32开源开发环境的搭建
- linux kernel network namespace
- web前端开发中遇到的细节问题
- 进程描述和控制
- cxgrid列合并
- 小怪兽日记(一)
- performance &OS Test Note
- 串口实用的循环缓冲区