Git简单命令2
1 本地初始化一个项目
git config --global user.name “你的名字或昵称”
git config --global user.email “你的邮箱”
(1)需要初始化版本库的文件中执行:
git init
git remote add origin <你的项目地址> //注:项目地址形式为:http://git.oschina.net/xxx/xxx.git或者 git@git.oschina.net:xxx/xxx.git
2 克隆一个项目
git clone <项目地址>
3 完成第一次提交
git add .
git commit -m “xxxx”
git push origin master
4 创建和合并分支
(1)创建dev分支,然后切换到dev分支中:
git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于下面两个命令:
git branch dev
git checkout dev
(2)查看当前分支:
git branch
git branch命令会列出所有分支,当前分支前面会标记一个*号。
(3)合并分支
git merge dev
git merge命令用于合并指定分支到当前分支。
(4)删除dev分支
git branch -d dev
(5)查看分支合并图
git log --graph
5 分支管理
(1)合并分支:
git merge --no-ff -m “merge with no-ff” dev
合并dev分支,--no-ff参数,表示禁用Fast forward。本次合并要创建一个新的commit,所以加上-m参数。
(2)查看分支历史:
git log --graph --pretty=oneline --abbrev-commit
6 Bug 分支
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
(1)保存现在工作场景
git stash
把当前工作场景“储藏”起来,等回复现场后进行恢复。
(2)查看现场分支
git stash list
查看又哪些工作场。
(3)恢复现场
A. git stash apply 恢复后,stash内容并不删除。需要使用git stash drop删除。
git stash apply [email protected]{0}
恢复指定的现场。
B. git stash pop 恢复的同时把stash内容也删除了。
(4)强行删除分支
git branch -D <name>
如果丢弃一个没有被合并过的分支,使用上述命令。
7 多人协作
(1)查看远程库信息
git remote
git remote -v 显示更详细的信息。
(2)推送分支
git push origin dev
l master分支是主分支,因此要时刻与远程同步;
l dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
l bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
l feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
(3)抓取分支
Git pull 把最新的提交从origin/dev抓下来,本地解决分歧再推送。
因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小结
l 查看远程库信息,使用git remote -v;
l 本地新建的分支如果不推送到远程,对其他人就是不可见的;
l 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
l 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
l 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
l 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
上