Git命令详解

一、总体示意图

在这里插入图片描述
参数说明:

1.存档库:当你去修改别的东西的时候,隐藏(临时保存)当前的修改
2.工作区:本地检出
3.暂存区(索引):索引(暂存区)保存了一份工作(树)的快照,作为下次提交的内容
4.本地版本库:.git 文件夹保存版本库需要的全部信息(Git 版本库的骨架),一般包括分支master, feature-x, bugfix-y
5.上游版本库:在网络(局域或因特网)上共享给其他开发者的版本库,一般叫"origin". 一般包括分支master, shared-feature-x, release-y

二、存档库
在这里插入图片描述
参数说明:

1.stash save [<msg>]
    保存当前修改到新的存档库,并且执行git reset ‑‑hard来回滚. msg是可选的来描述存档。想快速建立存档,省略掉"save"和msg.
2.stash apply [<stash>]
    从某个存档中将改变应用到工作区,默认是最近的存档
3.stash pop
    应用最后一个(或指定的)存档中的改动,然后从存档库丢弃它
4.stash list
    显示当前你有的所有存档
5.stash show [<stash>]
    显示存档中记录的改动,对比存档生成时的原来状态;不指定stash则显示最后一个
6.stash drop [<stash>]
    从存储区中删除单个存档;不指定stash则删除最后一个
7.stash clear
    清空存档库。注意相关存档会被清理,此操作不能被恢复
8.stash branch <branchname> [<stash>]
    新建并检出一个新分支branchname, 分支开始于存档建立时的源提交,应用存档的变化作为新的工作区和暂存区。如果成功并且stash是以 stash@{revision}方式给出的,则从存档库删除它。未给出则使用最后一个存档。这在当前分支运行 stash save 导致冲突时很好用,因为存档应用于它生成时的提交一定不会有冲突发生

三、工作区
在这里插入图片描述
参数说明:

1.status
    显示状态变化,包括
        1)暂存区与当前的 HEAD 提交之间(即将提交的),
        2)工作区与暂存区(下次不会提交),
        3)未曾被git追踪 (没有历史记录)
2.diff
    显示未添加到暂存区的不同
3.diff <commit or branch>
    查看工作区与某一提交之间的不同。你也可以使用 HEAD 来对比上一提交,或是用分支名来和分支比较
4.add <file... or dir...>
    添加当前的新内容或是修改的文件到暂存区,作为下次提交的(部分)内容。用add --interactive 来交互式操作
5.add -u
    添加当前修改(不包括新文件)到暂存区, 这与'git commit -a'准备提交内容的方式一致
6.rm <file(s)...>
    从工作区和暂存区删除某个文件
7.mv <file(s)...>
    从工作区和暂存区移动文件
8.commit -a [-m 'msg']
    提交上次提交之后的所有修改,
        1)未追踪的除外(即:所有暂存区有记录的文件);
        2)从暂存区删除已在工作区删除的文件
9.checkout <files(s)... or dir>
    更新工作区文件或文件夹,不会切换分支
10.reset --hard
    恢复工作区和暂存区到上次提交的状态,警告: 所有工作区修改都会被丢弃。使用这条命令来解决合并错误,如果你想从头开始的话传入 ORIG_HEAD 来撤销该次提交以来的所有改动
11.checkout <branch>
    切换分支,更改工作区和暂存区为branch分支的内容,之后HEAD指向branch分支
12.checkout -b <name of new branch>
    新建一个分支并且立即切换过去
13.merge <commit or branch>
    从branch name分支合并到当前分支,使用‑‑no-commit可以保持在(已经合并)但未提交状态
14.rebase <upstream>
    衍合:回滚从【当前提交和upstream分支分开处】开始直到当前提交的所有提交,将这些提交一一应用到upstream分支,结果作为upstream的新提交
15.cherry-pick <commit>
    把某个提交移动到当前分支来
16.revert <commit>
    回滚commit指定的提交,这需要当前工作区是干净的,即相比于 HEAD 提交没有修改
17.clone <repo>
    下载repo指定的版本库,并在工作区迁出master分支的HEAD版本
18.pull <remote> <refspec>
    从远程版本库取得修改到当前分支. 一般来说, git pull 相当于 git fetch 然后做 git merge FETCH_HEAD
19.reset --hard <remote>/<branch>
    重置本地版本库,让它与远程版本一致;用 reset ‑‑hard origin/master 来丢弃所有的本地改动;用这个来处理失败的合并,直接从远程开始
20.clean
    从当前文件夹开始递归清理不受版本管理的内容
21.stash save [<msg>]
    保存当前修改到新的存档库,并且执行git reset ‑‑hard来回滚. msg是可选的来描述存档。想快速建立存档,省略掉"save"和msg.
22.stash apply [<stash>]
    从某个存档中将改变应用到工作区,默认是最近的存档
23.stash pop
    应用最后一个(或指定的)存档中的改动,然后从存档库丢弃它

四、暂存区
在这里插入图片描述
参数说明:

1.status
    显示状态变化,包括
    1)暂存区与当前的 HEAD 提交之间(即将提交的),
    2)工作区与暂存区(下次不会提交),
    3)未曾被git追踪 (没有历史记录)
2.diff
    显示未添加到暂存区的不同
3.add <file... or dir...>
    添加当前的新内容或是修改的文件到暂存区,作为下次提交的(部分)内容。用add --interactive 来交互式操作
4.add -u
    添加当前修改(不包括新文件)到暂存区, 这与'git commit -a'准备提交内容的方式一致
5.rm <file(s)...>
    从工作区和暂存区删除某个文件
6.mv <file(s)...>
    从工作区和暂存区移动文件
7.checkout <files(s)... or dir>
    提交上次提交之后的所有修改,
        1)未追踪的除外(即:所有暂存区有记录的文件);
        2)从暂存区删除已在工作区删除的文件
8.reset HEAD <file(s)...>
    从下次提交中移除指定文件。重置暂存区记录但是不处理工作区(即: 文件改动被保留但不会被提交),同时报告没有被更新的文件
9.reset --soft HEAD^
    恢复上一次提交,保留暂存区的改动
10.diff --cached [<commit>]
    查看已经暂存的内容和上次提交的区别,也可指定某一提交
11.commit [-m 'msg']
    暂存区中的当前内容连同提交信息储存为新提交
12.commit --amend
    用当前暂存去的内容修改最近一次的提交,也可以拿来修改提交信息

五、本地版本库
在这里插入图片描述
参数说明:

1.diff <commit or branch>
    查看工作区与某一提交之间的不同。你也可以使用 HEAD 来对比上一提交,或是用分支名来和分支比较
2.commit -a [-m 'msg']
    提交上次提交之后的所有修改,
        1)未追踪的除外(即:所有暂存区有记录的文件);
        2)从暂存区删除已在工作区删除的文件
3.reset --soft HEAD^
    恢复上一次提交,保留暂存区的改动
4.reset --hard
    恢复工作区和暂存区到上次提交的状态,警告: 所有工作区修改都会被丢弃。使用这条命令来解决合并错误,如果你想从头开始的话传入 ORIG_HEAD 来撤销该次提交以来的所有改动
5.checkout <branch>
    切换分支,更改工作区和暂存区为branch分支的内容,之后HEAD指向branch分支
6.checkout -b <name of new branch>
     新建一个分支并且立即切换过去
7.merge <commit or branch>
    从branch name分支合并到当前分支,使用‑‑no-commit可以保持在(已经合并)但未提交状态
8.rebase <upstream>
     衍合:回滚从【当前提交和upstream分支分开处】开始直到当前提交的所有提交,将这些提交一一应用到upstream分支,结果作为upstream的新提交
9.cherry-pick <commit>
    把某个提交移动到当前分支来
10.revert <commit>
    回滚commit指定的提交,这需要当前工作区是干净的,即相比于 HEAD 提交没有修改
11.diff --cached <commit>
    查看已经暂存的内容和上次提交的区别,也可指定某一提交
12.commit [-m 'msg']
    暂存区中的当前内容连同提交信息储存为新提交
13.commit --amend
    用当前暂存去的内容修改最近一次的提交,也可以拿来修改提交信息
14.log
    显示最近的提交,新的在上边。参数:
        ‑‑decorate 显示分支和tag名字到对应的提交
        ‑‑stat 显示状态 (文件修改, 添加, 删除)
        ‑‑author=author 只显示某个作者
        ‑‑after="MMM DD YYYY" 如("Jun 20 2008") 只显示某个日期之后的提交
        ‑‑before="MMM DD YYYY" 只显示某个日期之前的提交
        ‑‑merge 只与当前合并冲突有关的提交
15.diff <commit> <commit>
    显示两个提交之间的不同
16.branch
    显示所有(本地)存在的分支。参数 -r 显示远程追踪分支,参数 -a 显示全部
17.branch -d <branch>
    删除某个分支,使用—D来强制删除
18.branch --track <new> <remote/branch>
    添加一个本地分支来跟踪某个远程分支
19.fetch <remote> <refspec>
    从远端版本库下载对象和引用(即版本信息)
20.push
    从本地提交推送分支改变到远程,分支为所有推送过的分支
21.push <remote> <branch>
    向远端版本库推送新的(已存在的)分支
22.push <remote> <branch>:<branch>
    向远端版本库推送分支,但是从不同的(本地)分支名
23.stash branch <branchname> [<stash>]
    新建并检出一个新分支branchname, 分支开始于存档建立时的源提交,应用存档的变化作为新的工作区和暂存区。如果成功并且stash是以 stash@{revision}方式给出的,则从存档库删除它。未给出则使用最后一个存档。这在当前分支运行 stash save 导致冲突时很好用,因为存档应用于它生成时的提交一定不会有冲突发生

六、上游版本库
在这里插入图片描述
参数说明:

1.branch --track <new> <remote/branch>
    添加一个本地分支来跟踪某个远程分支
2.clone <repo>
    下载repo指定的版本库,并在工作区迁出master分支的HEAD版本
3.pull <remote> <refspec>
    从远程版本库取得修改到当前分支. 一般来说, git pull 相当于 git fetch 然后做 git merge FETCH_HEAD
4.reset --hard <remote>/<branch>
    重置本地版本库,让它与远程版本一致;用 reset ‑‑hard origin/master 来丢弃所有的本地改动;用这个来处理失败的合并,直接从远程开始
5.fetch <remote> <refspec>
    从远端版本库下载对象和引用(即版本信息)
6.push
    从本地提交推送分支改变到远程,分支为所有推送过的分支
7.push <remote> <branch>
    向远端版本库推送新的(已存在的)分支
8.push <remote> <branch>:<branch>
    向远端版本库推送分支,但是从不同的(本地)分支名
9.branch -r
    显示远端分支
10.push <remote>:<branch>
    删除一个远程分支,通过向远程分支推送空内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值