git常用命令总结
git常用命令总结
前言:主要还是以前公司都是用的svn代码管理工具,现在需要使用git,这个工具其实一直都是我自己用于管理我自己github的项目用的,但是这次要团队开发,为了更好的合作,所以还是需要总结一下。
具体常用如下:第一部分都是一些基本的
git init :创建本地仓库 git pull ' 远端地址' :从远端同步下来 git remote add origin ' 远端地址' :和远端关联 git config --list :查看当前配置列表 git config --global user.name ' wangjin' git config --global user.email '1293604064@qq.com' git status :查看当前状态 git add . :提交该目录下所有到暂存区 git log :查看提交日志 git commit -m '修改日志' :添加日志 git push 提交到已经设定好的远端 git push -u origin master 提交到master远端 备注:第一次使用的时候如果提示 no upstream branch,还需要设置需要关联的远端分支 git push --set-upstream origin master
第二部分是进行分支的常用命令:
首先,我们创建dev
分支,然后切换到dev
分支:
$ git checkout -b dev Switched to a new branch 'dev'
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch dev $ git checkout dev Switched to branch 'dev'
然后,用git branch
命令查看当前分支:
$ git branch * dev master
git branch命令会列出所有分支,当前分支前面会标一个*号。
然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:
create new branch dev..
然后提交:
$ git add readme.txt $ git commit -m "create new branch...." [dev 45ae9a9] create new branch.... 1 file changed, 1 insertion(+)
现在,dev
分支的工作完成,我们就可以切换回master
分支:
$ git checkout master Switched to branch 'master' Your branch is up-to-date with 'origin/master'.
切换回master
分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev
分支上,而master
分支此刻的提交点并没有变:
现在,我们把dev
分支的工作成果合并到master
分支上:
$ git merge dev Updating 90bc1f7..45ae9a9 Fast-forward readme.txt | 1 + 1 file changed, 1 insertion(+)
git merge
命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev
分支的最新提交是完全一样的。
注意到上面的Fast-forward
信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master
指向dev
的当前提交,所以合并速度非常快。
当然,也不是每次合并都能Fast-forward
,我们后面会讲其他方式的合并。
合并完成后,就可以放心地删除dev
分支了:
$ git branch -d dev Deleted branch dev (was 45ae9a9).
删除后,查看branch
,就只剩下master
分支了:
$ git branch * master
因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master
分支上工作效果是一样的,但过程更安全。
小结
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
解决冲突
人生不如意之事十之八九,合并分支往往也不是一帆风顺的。
准备新的feature1
分支,继续我们的新分支开发:
$ git checkout -b feature1 Switched to a new branch 'feature1'
修改readme.txt最后一行,改为:
create new branch feature1..
在feature1
分支上提交:
$ git add readme.txt $ git commit -m "create new branch feature1 first modify" [feature1 b4309b0] create new branch feature1 first modify 1 file changed, 1 insertion(+)
切换到master
分支:
$ git checkout master Switched to branch 'master' Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits)
Git还会自动提示我们当前master
分支比远程的master
分支要超前1个提交。
在master
分支上把readme.txt文件的最后一行改为:
goback master....
提交:
$ git add readme.txt $ git commit -m "goback master first modify" [master 0b56936] goback master first modify 1 file changed, 1 insertion(+)
现在,master
分支和feature1
分支各自都分别有新的提交,变成了这样:
这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
$ git merge feature1 Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result.
果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status
也可以告诉我们冲突的文件:
$ git status On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) You have unmerged paths. (fix conflicts and run "git commit") Unmerged paths: (use "git add <file>..." to mark resolution) both modified: readme.txt no changes added to commit (use "git add" and/or "git commit -a")
我们可以直接查看readme.txt的内容:
test git modify second study git three add four add modify five add modify six add modify seven add modify eight add modify ... create new branch dev.. <<<<<<< HEAD goback master.... ======= create new branch feature1.. >>>>>>> feature1
Git用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,我们修改如下后保存:
test git modify second study git three add four add modify five add modify six add modify seven add modify eight add modify ... create new branch dev.. create new branch feature1.. goback master....
再提交:
$ git add readme.txt $ git commit -m "fixed conflicts" [master 0f3d64a] fixed conflicts
现在,master
分支和feature1
分支变成了下图所示:
用带参数的git log
也可以看到分支的合并情况:
$ git log --graph --pretty=oneline --abbrev-commit * 0f3d64a fixed conflicts |\ | * b4309b0 create new branch feature1 first modify * | 0b56936 goback master first modify |/ * 45ae9a9 create new branch.... * 90bc1f7 test name * c1bdf43 test commit * dd34c9a no add but commit,because use other parameter * 4ed30d1 eight modify dify * b45ca96 eight modify * 9332d40 seven modify * 72c6f9b six modify * f64b5a0 five modify * de8fd65 four modify * 83a4b1e three modify * 01c05cf two modify * 1acafa7 first modify * 09c1bba first git
最后,删除feature1
分支:
$ git branch -d feature1 Deleted branch feature1 (was b4309b0).
小结
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph
命令可以看到分支合并图。
谢谢学习!!!本次文章后面部分摘自https://blog.csdn.net/weixin_38154321/article/details/80676939。