例如:分支master dev
1. 新建一个分支 $git branch dev
2. 切换分支 $git checkour dev
3. (1,2)可以合并为 $git checkout -b dev
4. 查看当前分支$git branch
*dev
branch (会列出所有分支,在当前分支前有*)
5. 对文件做一些修改,然后提交。(当前分支为dev)
6. 切换回master分支$git checkout master
7. 在master分支上可以看到对文件所做的修改不存在。
8. 把dev分支工作成果合并到master上 $git merge dev merge命令用于将指定分支合并到当前分支
9. 合并后可以删除dev分支 $git branch -d dev
10. 删除后查看branch ,只剩下master分支了。
查看分支(本地) git branch git branch -r(远程) git branch -a(本地和远程)
创建分支 git branch 分支名
删除分支(本地) git branch -d 分支名
删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
切换分支 git checkout 分支名
创建+切换 git checkout -b 分支名
分支合并到当前分支 git merge 分支名
新建一个分支feature1
在f分支里将test.py 文件修改,提交
切回master分支,修改test.py,提交
使用merge $git merge feature1 合并
快速合并发生冲突
进行修改后,保存再提交。
当git 无法自动合并分支时,必须先解决冲突,再提交,合并完成
用git log --graph 命令可以看到分支合并图。
用fast foeward 模式,在删除分支后,会丢掉分支信息
禁用ff模式后,提交时会产生一个commit信息,这样从分支历史上可以查看出历史信息
1.新建一个dev分支,修改文件并提交。
2.切换回master分支
3.合并分支$git merge --no-ff -m”merge dev master” dev
4.这样可以用 git log 查看历史 $git log --graph --pretty=oneline --abbrev-commit
开发过程中,每个人都有自己的分支,自己提交到dev分支中。版本发布时,再将dev提交到master
1.要创建一个新的分支修改一个bug ,但当前分支没有提交。
2.$git stash 将当前分支(dev)‘隐藏’起来,等恢复现场后继续工作。
3.确定要在哪个分支上修复,(当前在dev分支工作)假定在master分支上建立临时分支
$git checkout master
$git checkout -b issue-001
4. 现在修改bug,然后提交
5. 完成后切回master,merge合并。$git merge --no-ff -m “merge in master”
删除issue-001分支
6. 修复完bug,回到dev分支
7. 刚才工作现场‘隐藏’到哪去了。用$git stash list 还在,只是存在某个地方了
8. 两种恢复方法$git stash apply 但恢复后stash内容不删除,你可以用$git stash drop 删除
9. $git stash pop 恢复的同时把stash内容删除了
10. 你可以多次stash ,恢复时先用git stash list 查看,再恢复指定stash 用$git stash apply stash@{0}
开发一个新功能,在feature-vulcan分支上
1. 新建$git checkout -b feature-vulcan 开发完后提交。切回dev,准备合并,删除
2. 突然改计划,销毁此分支
3. $git checkout -d feature-vulcan Git提示失败,因为还没有合并,若删除将丢掉修改。
4. 强制删除$git branch -D feature-vulcan
查看远程库信息$git remote
或$git remote -v (可以看到详细的抓取和推送的origin地址)
$git remote remove 库名 (删除本地库)
$git push -u 本地库(可选) 本地分支(可选)
例:$git push -u origin master
master:主分支
dev:工作分支
bug:不用提交,在本地修改
feature:是否提交取决于,是否和小伙伴合作在上面开发
现在模拟一个新的电脑(注意要把SSH key添加到github中),或在同一个电脑的另一个目录克隆
$git clone [email protected]:123lxy/Desktop.git
默认情况下克隆后只能看到master分支
1. 现在要在新的dev分支上开发
创建$git checkout -b dev origin/dev
现在可以在dev分支上修改,提交,push
2. 其他人已经修改,将origin/dev 分支推送了提交,碰巧我也对文件做了修改,并试图push
失败了,因为冲突。
git pull 把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。
3. git pull失败了因为没有指定本地dev与远程origin/dev的链接
$git branch --set-upstream dev origin/dev
再pull,成功了。
4. 但合并有冲突,需要手动解决和 六(2)解决冲突一致。
1.$git remote -v 查看远程库信息
2.本地推送git push origin branch-name ,失败就git pull抓取远程新提交
3.在本地创建和远程对应的的分支git checkout -b branch-name origin/branch-name(本地和远程名最好一致)
4.建立本地分支和远程分支的关联git branch --set-upstream branch-name origin/branch-name
5.从远程抓取分支用git pull ,若有冲突,先处理冲突