Git 常用指令

在Android开发中,代码管理是必不可少的,即使有些时候是敏捷开发,或者是小demo也需要通过代码管理工具来进行管理,这样对于任何的修改都能够一目了然。虽然现在不管是Git还是SVN都有比较方便图形化操作界面,但是感觉还是命令行能更好的理解其管理的核心。

这里仅列出一些平时工作中用的比较多的Git命令,记录下来,避免忘记。

目录

1.Git回退命令

2.git stash的使用

3.解决提交冲突

4.检出(checkout与origin)

5.合并分支修改(cherry- pick)

6.分支记录(branch)

7.生成patch

8.打入patch


1.Git回退命令

回退到指定版本 git reset --hard 版本序列号
撤回上一次的提交,保留提交前的代码 git reset --soft HEAD~1
撤回上一次文件添加,保留原来修改 git reset HEAD .

2.git stash的使用

分支压栈(保存现有修改) git stash
分支出栈(还原修改信息) git stash pop <stash id>
显示修改内容 git stash show <stash id>
显示具体区别

git stash show -p <stash id>

清除某一条压栈记录 git stash drop <stash id>
清除所有的压栈修改 git stash clear

3.解决提交冲突

拉取最新代码 git pull <remote branch>    (显示有冲突)
当前修改压栈 git stash
查看保存标记 git stash list        (stash@{0})
再次拉取更新 git pull <remote branch>
合并冲突代码,并解决冲突 git stash pop 0(或者 stash@{0})
清除压栈信息 git stash drop 0 或者 git stash clear(清除所有)

4.检出(checkout与origin)

切换分支

git checkout <branch name>

拉取分支具体文件 git checkout <branch name> <file path>

拉取一个本地不存在的远程分支到本地

(本地自动创建并关联,自动切换过去)

git checkout -b origin/远程分支名

(如果失败,先执行一次git fetch)

创建分支并切换到该分支 git checkout -b <branch name>

将本地分支push到远程分支

本地分支名:远程分支名

git push origin debug:debug

推送一个空分支到远程分支debug

相当于删除远程分支

git push origin :debug
删除远程分支debug git push origin --delete debug
如果远程分支不存在,上传到一个新的远程分支debug git push --set-upstream origin debug

5.合并分支修改(cherry- pick)

指定合入任何一条不在HEAD分支上

的一次提交记录

git cherry-pick 版本序列号
继续更新查看合并情况 git cherry-pick --continue
取消这次更新 git cherry-pick --abort
整理排序多条提交记录 git rebase -i 多条提交记录

6.分支记录(branch)

查看本地所有分支和最近一次提交记录 git branch -v
查看远程所有分支和最近一次提交记录 git branch -r
查看所有分支(本地和远程) git branch -a

7.生成patch

成最近一次commit的patch git format-patch HEAD^
生成最近两次commit的patch git format-patch HEAD^^

生成两个commit间的修改的patch

(包含两个commit. <r1>和<r2>都是具体的commit号)

git format-patch <r1>..<r2/>
生成单个commit的patch git format-patch -1 <r1>
生成某commit以来的修改patch(不包含该commit) git format-patch <r1>
生成从根到r1提交的所有patch git format-patch --root <r1>

8.打入patch

查看patch的情况 git apply --stat 0001-limit-log-function.patch
检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上 git apply --check 0001-limit-log-function.patch
将名字为0001-limit-log-function.patch的patch打上 git am 0001-limit-log-function.patch
添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者 git am --signoff 0001-limit-log-function.patch
将路径~/patch-set/*.patch按先后顺序打上 git am ~/patch-set/*.patch
当git am失败时,用以将已经在am过程中打上的patch废弃掉(比如有三个patch,打到第三个patch时有冲突,那么这条命令就把打上的前面两条patch丢弃掉,返回没有打patch的状态) git am --abort
当git am失败,解决完冲突之后,这条命令会接着打patch 合入一个patch包 git am --resolved

(注:git apply是另外一种打patch的命令,其与git am的区别是,git apply并不会将commit message等打上去,打完patch后需要重新git add和git commit,而git am会直接将patch的所有信息打上去,而且不用重新git add和git commit,author也是patch的author而不是打patch的人)

这些命令都是可以配合使用的,比如: 在/app目录下 git am .patch文件  打入一个patch文件,然后git reset HEAD~1 取消patch中的提交,然后就可以进行本地编辑了。

再如:合并两条stash ,首先出栈第一条记录git stash pop 0 ,然后进行提交git add . ,git commit -m "提交信息" ,再出栈第二条记录,git stash pop 1 ,git add . ,最后撤销第一条记录的提交:git reset --soft HEAD^ , 此时两次的stash就已经合并了。

暂时想到的用得比较多的就是这些,后面也会持续更新和补充,好记性不如烂笔头。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>