说在前面

       这篇文章主要描述在代码仓库管理的某个特定场景下需要使用的Git命令,而不是对Git的所有基础命令做相关介绍。因此本篇文章以实际应用的场景为重点,来描述如何使用Git命令。

       开始之前,假设读者已经对最基本的Git命令有所了解,比如log,status,pull,push,commit, add等。

目录

具体场景和命令

1. 最基本的提交代码过程

2. 在当前commit的基础上继续提交代码

3. 撤销add的内容

4. 撤回Commit

5. 返回到某次Commit

6. 修改多次Commit中的某一次

7. 不小心在commit被merge后commit --amend了?

8. 修改他人的Commit并提交

9. 处理Merge Conflict

其他技巧

1. 灵活的利用git stash命令

其他常见的git错误

filename too long错误

segmentation fault错误


具体场景和命令

1. 最基本的提交代码过程

1. git add --all:添加所有修改或者将--all修改为文件名来添加该文件。注意没有冒号。

2. git commit -m “message”:提交当前add的内容,message是对此次提交做的说明。如果在当前的commit之上继续提交,则使用git commit --amend,然后shift+zz保存退出。

3. git pull --rebase:更新仓库中的最新代码。

4. 如果步骤3导致有冲突需要解决:手动打开文件解决冲突,冲突解决后 git add --all 然后 git rebase --continue,没有冲突需要解决则执行步骤5。

5. git push origin HEAD:refs/for/master :将代码更新到远程仓库,HEAD:refs/for/master是要推送的仓库的索引。

2. 在当前commit的基础上继续提交代码

1. git add --all

2. git commit --amend

3. 保存并退出,例如大写 ZZ 执行保存退出  

4. git push origin HEAD:refs/for/master 

3. 撤销add的内容

 第一种情况,只撤回,修改的内容回到未add的状态: git reset HEAD

 第二种情况,抛弃所有修改,不保存修改内容:git reset --hard HEAD

4. 撤回Commit

第一种情况,只撤回Commit,且修改的代码保留:git reset --soft HEAD^

第二种情况,同时撤回Commit和add,所有文件回到未add状态:git reset --mixed HEAD^

5. 返回到某次Commit

第一种,拿到commit id返回到这次commit:git reset --hard CommitId

第二种,返回到已知的前n次的提交:git reset --hard HEAD~n,其中n是返回到第几次

第三种,返回到上次提交:git reset --hard HEAD^,返回几次就加几个^符号

6. 修改多次Commit中的某一次

1. git rebase -i HEAD~n:这里返回到第几次,n就选几,n起始值为1。

2. 此时进入了修改界面,把你想撤回的那笔commit前面的pick更改为edit

3. 修改文件

4. git add --all

5. git commit --amend

6. 保存退出,例如shift + zz

7. git rebase --continue

8. git push origin HEAD:refs/for/master 

7. 不小心在commit被merge后commit --amend了?

1. git reset --soft HEAD~1

2. git commit -m "message"

3. git push origin HEAD:refs/for/master 

8. 修改他人的Commit并提交

1. 从仓库拉别人commit的代码,拉的时候选择cherry-pick

2. 手动解决冲突

3. 修改自己的代码,并执行git add --all

4. git commit --amend

5. 保存退出

6. git push origin HEAD:refs/for/master 

9. 处理Merge Conflict

1. git pull --rebase origin HEAD:refs/for/master:HEAD:refs/for/master是仓库的索引

2. 手动打开文件,解决冲突

3. git add --all

4. git rebase -continue

5. git push origin HEAD:refs/for/master:HEAD:refs/for/master是仓库的索引

除了以上方法,还可以通过第8小节中提到的cherry-pick方法来解决冲突,或者第6小节中的方法来解决。

其他技巧

1. 灵活的利用git stash命令

       git stash命令可以帮助我们暂存修改,通常的使用场景都是,别人更新了一笔代码,你需要更新,但是担心自己的内容被覆盖,那就先git stash然后git pull --rebase,然后git stash apply恢复自己的暂存;

stash相关命令包含了:

git stash:暂存当前修改,每次git stash都会将当前所有修改暂存起来,体现在咱村列表中

git stash list:查看所有暂存的列表

git stash clear:清除所有暂存

git stash apply:恢复所有暂存内容

git stash apply + id:恢复id指向的某次暂存,例如id为0时,表示恢复最近一次暂存

git stash pop:拉出暂存列表中最新的一次暂存

其他常见的git错误

1. filename too long错误

解决方法:直接执行命令 git config -global core.longpaths true 进行修复

2. segmentation fault错误

解决方法:更新你的git软件,然后重新拉一次代码,在新的代码上做操作

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐