git基础

目录

1、git提交流程

1.1 正常提交流程

1.2 冲突解决

 2、git reset命令

2.1、reset –hard:重置暂存区和工作目录中的内容

2.2、reset --soft:保留工作目录和暂存区中的内容,并把重置HEAD所带来的差异放入暂存区

2.3、reset –mixed(不加参数默认为mixed):保留工作目录,清空暂存区,同时将暂存区中的内容以及重置HEAD所带来的差异放入工作目录中。

3、git stash命令的使用


1、git提交流程

1.1 正常提交流程

(1)、拉取两套代码,一套用于自己平时的修改(for_work),另外一套用于提交(for_commit)

(2)、当在for_work目录代码修改完成,功能验证正确以后,使用如下命令:

        git stauts 1>log/change.log 2>&1

使用notepad++搜索.h/.c/.cpp查看对哪些文件进行了修改,把文件的路径记录下来。

(3)、打开for_commit目录,使用git pull将代码更新到最新版本。

(4)、使用Beyond Compare同时打开for_work和for_commit中被修改的文件。Beyond Compare对两个文件进行对比,有差异的代码会用红色字体标出。

(5)、在for_work目录下使用git diff命令,查看工作目录中修改的地方。结合Beyond Compare可以快速对比出自己修改的部分,然后使用箭头把修改部分添加到for_commit中。

(6)、等到把所有文件都修改完毕后,在for_commit中使用git diff查看修该的内容。与for_work中的进行对比。(第一次验证)

(7)、在for_commit中使用git add把修改的文件加入暂存区。

(8)、编译指定的子项目,验证修改的功能是否正确。

(9)、如若功能正确,在for_commit中使用git diff --cached再一次验证修改的内容。

(10)、使用git commit提交本次代码

(11)、git push

例如:git push origin HEAD:refs/for/master%r=developer2,r=reviewer1,cc=lijingbei

(11.1)、master要修改为当前的分支

(11.2)、r代表审查者(软件经理、科长(wuqibing)、小组长(xuegang))

1.2 冲突解决

        提交完成后,如若在gerrit中看到Merge Confilct则代表本次的提交有冲突,点击

ABANDON 按钮将其放弃掉。

解决步骤:

(1)、使用git status 查看有哪些冲突文件,记录一下有冲突文件的名称以及文件的位置。

(2)、使用vim进入到有冲突的文件中,查看冲突的位置。对冲突的地方进行合并。

(3)、使用git add命令把解决完冲突的文件加入暂存区。

(4)、使用git log查看提交记录,记录有冲突的commit节点前一个commit ID

(5)、使用git reset --soft  <commit ID>回退到有冲突commit节点的上一次节点

(6)、重新使用git commit 重新提交

(7)、git push 重新提交到仓库

        gitk:可以查看提交的历史LOG,值得研究。

        git log:可以查看提交的历史

        git show  <commitid>:可以查看本次提交的具体内容。

 2、git reset命令

        适用场景:使用Git的commit命令提交代码后,发现本次的提交有错误的内容。此时有2种解决的办法:

        (1)、修改错误的内容,重新提交一次。

        (2)、使用git reset命令撤销此次的错误提交。

但第一种方法,会有一个明显的弊端,那就是会在记录中留下一次错误的版本。

git reset 的三种模式分别为:

git reset --hard

git reset –soft

git reset –mixed(默认)

2.1、reset –hard:重置暂存区和工作目录中的内容

回滚前:

回滚后:

        git reset --hard会在重置HEAD和branch的同时,重置暂存区和工作目录当中的内容。假设你在镜像4的位置使用了git reset --hard命令回滚到了镜像3,那么你的暂存区和工作目录中的内容就会完全重置为和HEAD所指向新位置相同的内容。即:没有commit的修改都会被擦除。

2.2、reset --soft:保留工作目录和暂存区中的内容,并把重置HEAD所带来的差异放入暂存区

重置前:

重置后:

  

什么是“重置HEAD所带来的差异”?

        当从镜像4回滚到镜像3时,原节点镜像4相对于reset目标节点镜像3的变化就是重置HEAD所带来的差异。

2.3、reset –mixed(不加参数默认为mixed):保留工作目录,清空暂存区,同时将暂存区中的内容以及重置HEAD所带来的差异放入工作目录中。

hard、soft和mixed三个参数之间的比较

(假设由节点回滚到了节点

方式

工作目录(W)

暂存区(S)

说明

hard

W=0

S = 0

没有commit的内容被完全擦除

soft

W不变

S = S + 

mixed

W=W + S + 

S = 0

3、git stash命令的使用

(1)、git stash save "save message":执行存储时,添加备注,方便查找,只使用git stash也可以,但查找时不方便。

(2)、git stash list:查看stash有哪些存储。

(3)、git stash show: (仅显示改动的文件名)显示做了哪些改动,默认show第一个存储,如果要显示其他存储,后面加stash@{$num},比如显示第二个:

        git stash show stash@{1} 

(4)、git stash show -p : (显示改动的详细内容)显示第一个存储的改动,如果想显示其他存储改动,命令 git stash show stash@{$num} -p,比如显示第二个:

        git stash show stash@{1} -p

(5)、git stash apply:应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他的,git stash apply stash@{$num},比如应用第二个:

        git stash apply stash@{1}

(6)、git stash pop: 恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令: git stash pop stash@{$num},比如应用并删除第二个:

        git stash pop stash@{1} 

(7)、git stash drop stash@{$num}:丢弃stash@{$num}存储,并从列表中删除这个存储

(8)、git stash clear:删除所有缓存的stash
说明:新增文件,直接执行stash命令是不会被存储的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值