git命令行操作

分类:软件编程
阅读:374
作者:majingjing
发布:2017-08-20 11:07

远程仓库

将本地仓库添加到远程仓库

git remote add origin git@github.com:michaelliao/learngit.git

把本地库的所有内容推送到远程库上

git push -u origin master

创建与合并分支

创建分支

git branch dev

切换分支

git checkout dev

合并分支

git merge dev

(Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息)

删除分支

git branch -d dev

查看分支

git branch

分支管理策略

git merge --no-ff -m "merge with no-ff" dev

合并dev分支,请注意--no-ff参数,表示禁用Fast forward

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去

查看分支历史

可以看出分支结果图

git log --graph --pretty=oneline --abbrev-commit
*   614c081 confict fixed
|\
| * 133adef and simple
* | 0e83e20 too simple
|/
* 85d5519 dev init
* 9001e88 test6-3
* d5574ca test6-2
* ca195aa test6-1
* 94f3e62 test5
* 608bb65 test5
* 2161feb test4
* 58ff738 test3
* 07e3e41 test2
* 5be1a0f test
* f168f13 全部提交
* 8f08296 增加描述
* e2de08b 测试初始提交

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

image.png

小结

Git分支十分强大,在团队开发中应该充分应用。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

Bug分支

当我们正在dev分支上开发的时候,有bug需要在master分支上修复时,就需要切换到master分支然后在创建bug修复分支 然而此时还有代码还不能提交到dev分支上,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

#储藏未提交的代码
git stash

#切换分支到master,创建分支,切换分支
git checkout master
git branch issue-101
git checkout issue-101

#代码修改完成后再次提交代码
git add readme.txt 
git commit -m "fix bug 101"

#切换分支到master,合并分支代码到master
git checkout master
git merge --no-ff -m "merged bug fix 101" issue-101

#删除分支
git branch -d issue-101

#再次切换分支
git checkout dev
git status

#查看储藏区,恢复储藏区并删除
git stash list
git stash pop
git stash list

恢复储藏区还有一种方式是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

恢复制定的储藏区

git stash apply stash@{0}

多人协作

  • 查看远程库信息,使用git remote -v;

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

创建标签

敲命令git tag 就可以打一个新标签

用命令git tag查看所有标签

查看提交点

git log --pretty=oneline --abbrev-commit

创建标签在某个提交点上

git tag v0.9 f168f13

用git show 查看标签信息

可以创建带有说明的标签,用-a指定标签名,-m指定说明文字

git tag -a v0.1 -m "version 0.1 released" e2de08b

操作标签

命令git push origin 可以推送一个本地标签;

命令git push origin --tags可以推送全部未推送过的本地标签;

命令git tag -d 可以删除一个本地标签;

命令git push origin :refs/tags/可以删除一个远程标签

配置别名

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"