整理了一些git常用命令,方便快速查找,提高开发效率,可补充追加。命令如下:
git branch //查看分支,-a:查看所有分支,-r:查看远程分支;-D branch_name:删除分支
cat .git/config //查看本地分支与远程分支的对应关系
git checkout local_branch_name //跳转到名为local_branch_name的本地分支
git checkout -b local_branch_name origin/remote_branch_name //新建名为local_branch_name的本地分支并跳转到新建分支,新分支与名为remote_branch_name的远程分支关联
git status //查看修改的文件列表,红色待修改区域,绿色待提交区域
git diff //查看修改的文件详细记录
git add . //将当前文件夹下的修改,加入待提交区域(操作完成须git status检查),git add --all:全部修改加入待提交区域
git commit -s //提交到本地,下面详细介绍。git commit --amend -s:将待提交区域的代码补充到本地分支的栈顶commit。
git pull //从对应的远程分支同步代码当当前分支,可能会发生冲突。可加 --rebase 选项
git push //提交代码到远程分支
git log //查看当前分支的提交记录
git reset HEAD^ //撤销栈顶的一个提交(亦称为change,commit),默认为soft reset,即栈顶change修改的代码还在。git reset --hard HEAD^:撤销栈顶commit,修改的代码全部清除
git reflog //查看本地操作记录
git cherry-pick commit-id //pick某个commit到当前分支的栈顶
git stash //临时保存
git stash pop //临时恢复
git remote -v //查看远程分支
git remote add origin remote_branch_name //添加远程仓库
git rebase origin/remote_branch_name //fast forward本地分支的HEAD指针,指向远程分支最新的commit
git ls-files -u //列出冲突文件
git rebase
使用git开发的一个特点,即开发者经常会在本地新建若干分支,在某个本地分支上进行新feature的开发,这会产生一个问题:
等开发者开发feature完毕想要上传代码时,服务器上的远程分支已经入库了其他开发者的一些commit,此时上传代码可能会出现冲突,导致失败。
如何解决此问题?以下是个人推荐的一条建议。
确保本地分支上的修改,永远是在远程分支最新的栈顶commit上完成的。具体做法:
1)每次上传代码时,先与远程分支同步一下。若远程分支更新了,使用git rebase使本地分支的HEAD指针指向最新入库的commit,若出现冲突,请解决冲突。
完成以后,本地分支未入库的commit,都已经在远程分支最新的HEAD之上。此时可以顺利提交本地的commit。
2)每天同步代码。如果在某个本地分支上开发的时间较长,例如要几天或几周,请在每天的固定时间点与远程分支同步。
例如:每天早上上班的第一个事情,就是与远程分支同步代码。
此做法可以避免本地分支因开发feature周期过长,导致最后想入库时,与远程分支代码差异较大,merge异常困难的问题。
建议开发流程:
1、git status (如果有更改,执行2,3)
2、git add .
3、git commit -m "xx"
4、git pull --rebase (如果有冲突,解决冲突之后git add ,git rebase --continue或者git rebase skip )
5、git push origin
推荐资料:
《Pro Git》:http://git-scm.com/book/zh/v1
《Git权威指南》