Git, 你必须要知道的那些事(1)

如果你正在使用Git,但是经常疑惑为什么有些命令达不到期望的结果,那么这篇文章你需要仔细看。对Git新手来说,按照这篇文章列出的用例按图索骥,也足以满足你日常工作的需要了。

首先列出一个经典的Git Flow,大部分命令都是有使用条件的,只有在满足使用条件的情况下,这些命令才会得到期望的结果,不同的条件下,你需要使用不同的命令。

下面就从现实需求的角度来介绍一些主要命令,这些用例基本覆盖了你日常工作最可能遇到的情况。撤销与清除是同一个意思

需   求 

Git 命令 

添加本项目下所有的修改(含新增文件、新增目录)到暂存区 

Git add --all 

撤销所有的没有staged过的,但是这些文件\目录已经被Git跟踪过了 

Git checkout . 

Git restore . 

撤销新增的文件和文件夹,没有进入staged,也从未进入git的 

Git clean -df 

进入暂存区,但还没有commit,想撤销这些已暂存的所有修改,回到未修改状态,清空暂存区和工作区 

Git reset --hard 

撤销提交到暂存区的修改, 修改内容恢复到工作区 

Git reset  

如果已经提交到本地仓库,想撤回这些内容(回滚一次),修改的内容仅恢复到工作区。暂存区和本地仓库则是本次提交之前的断面。 

如果使用--hard, 则工作区,暂存区和本地仓库则全部恢复到本次提交之前的那个断面 

Git reset –-soft HEAD~1 

只有远程库比本地库超前(远程库有更多提交)的时候才起作用,才会用远程的断面来覆盖本地的所有断面(要求暂存区和工作区没有未提交的变化,如果暂存区或者工作区有改变,需要先用2, 3, 4处理) 

Git pull 

git diff检查的是工作区与暂存区之间的差 

Git diff 

还有一种情况,如果我们使用forked repository的模式,看下图,在我们的本地所做的修改想提交到Origin,然后再从Origin上提交pull Request来合并自己的代码到Upstream的main分支的时候,upstrea上的main分支已经有很多提交了,这种情况如何处理呢?

假设我们想把我们本地的feature/My_Working_Feature 上的修改,合并到Upstream上的main分支,分两种情况:

1. 如果创建fork 仓库的时候有自动同步选项,比如下图所示,这种情况下Upstream会向Origin自动更新

于是我们要做的步骤依次如下:

a. git checkout main 

b. git pull 

c. git checkout feature/My_Working_Feature 

d. git merge main 

e. git push origin feature/My_Working_Feature 

然后在Origin上向Upstream提交pull request,把My_Working_Feature合并到Upstream上的main分支

2. 如果Upstream无法向Origin自动更新

你需要执行一次:

git remote add upstream url of your Upstream repo

然后:

a. git checkout main 

b. git pull Upstream/main

(b') git push origin main----(可选,主要是用来同步upstream与Origin)

c. git checkout feature/My_Working_Feature 

d. git merge main 

e. git push origin feature/My_Working_Feature 

然后在Origin上向Upstream提交pull request,把My_Working_Feature合并到Upstream上的main分支

上述采用merge的方式来合并,还有一种rebase的模式也可以合并。有时间再将git rebase命令

把上述内容搞清楚,你就可以很好地应付你的日常工作了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值