程序员经常使用的Git命令

如果想要更加深入学习Git,应该在官网上阅读.Git-Book.

下面我列一下我经常用到的命令吧.

git add file

开始跟踪一个文件,并且把file变成暂存状态

git add --all

跟踪全部文件

git reset HEAD file

取消跟踪的文件

git status

查看哪些文件处于什么状态

git commit -s

提交更新,并且跳转到提交编辑页面,如果不想跳转那么麻烦就用 -m

git pull --rebase

将远程服务器的代码更新到本地.同:git fetch + git rebase FETCH_HEAD rebase操作不会生成新的节点,而是将分支融合成一个线性的提交。

git rebase --abort

回到rebase操作之前的状态,之前的提交的不会丢弃,简单来说就是撤销rebase。

git rebase --skip

将引起冲突的commits丢弃掉,(慎用)

git rebase --continue

git pull --rebase 之后,本地如果产生冲突,手动解决冲突之后,用"git add"命令去更新这些内容的索引(index),然后只要执行:git rebase --continue 就可以线性的连接本地分支与远程分支,无误之后就回退出,回到主分支上。
注意:一般情况下,修改后检查没问题,使用rebase continue来合并冲突。

git commit --amend

对上次提交的内容进行修改,并修改提交说明

git push

将本地版本库的分支推送到远程服务器上对应的分支

git reset --hard

永久丢弃对所有文件的所有本地更改(慎用)

git reset --hard commit_id

回退到某个指定的版本(慎用)

git checkout - -

撤销本地变化(永久丢弃)

git reset --soft

回退到某个版本.只回退commit信息,不会将提交的文件也清除.如果还要提交,直接commit即可

git revert -n commit _id

撤销之前的某一版本,而且保留该目标版本后面的版本.反做,最后使用commit提交反做.

git branch

列出本地已经存在的分支

git checkout -b branchName

新建一个分支,并切换到这个分支

git branch --no-merged

查看尚未合并的工作分支

git branch -d branchName

删除该分支,如果这个分支中还包含着尚未合并进来的工作成果,那么会删除失败

git branch -D

强制删除该分支,不论是否合并过

git reflog show

查看所有分支的操作记录(即使已经被删除的commit),有了操作的commit_id之后就可以做许多事情了.比如有的时候删除了一个分支,然后又想恢复.这个时候查看git log是没有信息的,所以有了这条命令就不怕误删了.

git log --graph

显示ASCII 图形表示的分支合并历史

git stash

快速保存本地更改

git stash save xxx

可以在保存时添加备注信息,这这样对于多个stash管理和识别将更加方便

git stash list

列出所有以前暂储过的工作状态

git stash pop

用户回到上一个存储的工作状态并将其从stash存储列表中删除

git stash apply

作用与git stash pop类似,恢复更改,但是不删除储藏堆栈中的更改。

git checkout -b dev origin/dev

拉取远程分支到新的分支并切换到这个新分支上面

git cherry-pick commit_id

用于把其他分支的commit,移到当前分支

git clone

从远程库中克隆,克隆一个版本库到新的目录

git clone -b 远程分支名 --single-branch --depth=1 远程分支主仓库地址

有些库特别大,而我们只需要用到某个分支的时候,使用此命令
例如:git clone -b p/ali/l/forp/dev –single-branch --depth=1 ssh://aliserver:29418/ali/delivery/AliDelivery dev

git remote show origin

查看有关于origin的一些信息,包括分支是否tracking

git remote prune origin

会与远程库进行一次同步,最终清理掉版本库中的dev分支,但本地工作区中的dev分支并不会删除


制作补丁

最后一次提交
  1. 我们经常修复Bug,然后将该Bug的代码合并到某个分支中,如果每个分支都通过手动修改就会非常麻烦,这是可以将修改的代码制作称一个补丁,然后应用到其它分支即可。当我们修改并提交代码后,这个代码通常是最后一次提交,因此可以用下面命令非常方便的制作一个补丁。其中,-1表示最后一次提交,-o表示补丁文件输出的目录。

git format-patch -1 -o /root/patch/

  1. 有的时候这个Bug非常复杂,我们可能进行了多次提交,这个时候可以将命令调整为如下格式。示例中-5表示将最近5次提交制作成补丁。当然可以用下面介绍的第2中方式。

git format-patch -5 -o /root/patch/

从某commit以来的修改
  1. 有的时候这个Bug非常复杂,我们可能进行了多次提交,而且可能数起来都非常麻烦,这个时候可以将命令调整为如下格式,这个命令格式将某次提交(不包含该次提交)之前的所有提交做成补丁。

git format-patch de85add54522b7ca3b7ad99c7c5ea24525d39ba0 -o /root/patch/

  1. 如果我们只想将该次提交制作称补丁,那么应该怎么办呢?可以使用如下命令:

git format-patch -1 de85add54522b7ca3b7ad99c7c5ea24525d39ba0 -o /root/patch/

  1. 如果想将该次提交之前的若干个提交一起制作成补丁呢?可以使用如下命令,将该次提交之前的3个提交(含本次提交)制作成bud

git format-patch -3 de85add54522b7ca3b7ad99c7c5ea24525d39ba0 -o /root/patch/

两个commit间的修改
  1. 有的时候可能需要将新版本中解决Bug的代码移到老版本中,而代码提交的又多,又很久远。这是可以将两次提交之间的内容(包含两个commit)全部做成补丁。需要注意的是两次commit id之前是三个点(…)。

git format-patch 7f581e5fabbed21ad8c8ccd3398513d626f01ecf…de85add54522b7ca3b7ad99c7c5ea24525d39ba0e919cd7a -o /root/patch/
其实这个commit id不需要全量,可以只截取一部分。
git format-patch 7f581e5fabbed…de85add54522b7 -o /root/patch/

应用补丁

  1. 制作的补丁最终肯定是要用的,下面我们介绍一下如何使用git补丁。首先需要把生成的patch文件拷贝到某个目录下。比如本文假设生成在/root/patch/下。检查patch(补丁)文件这个命令用于检查补丁文件,确保文件没有问题。

git apply --stat /root/patch/0001-test-fix.patch

  1. 查看是否可以应用成功
    这个命令用于检查如果应用到本代码树是否会有问题,相当于一个演练。这样可以避免合并的时候才出现问题。

git apply --check /root/patch/0001-test-fix.patch

  1. 实际应用补丁
    这个命令是进行实际的应用,此时补丁代码会合并到代码树中。

git am -s < /root/patch/0001-test-fix.patch

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值