常见场景下的Git命令组合使用
git stash命令可以帮助我们暂存修改,通常的使用场景都是,别人更新了一笔代码,你需要更新,但是担心自己的内容被覆盖,那就先git stash然后git pull --rebase,然后git stash apply恢复自己的暂存;手动打开文件解决冲突,冲突解决后 git add --all 然后 git rebase --continue,没有冲突需要解决则执行步骤5。开始之前,假设读者已经
说在前面
这篇文章主要描述在代码仓库管理的某个特定场景下需要使用的Git命令,而不是对Git的所有基础命令做相关介绍。因此本篇文章以实际应用的场景为重点,来描述如何使用Git命令。
开始之前,假设读者已经对最基本的Git命令有所了解,比如log,status,pull,push,commit, add等。
目录
7. 不小心在commit被merge后commit --amend了?
具体场景和命令
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软件,然后重新拉一次代码,在新的代码上做操作
更多推荐
所有评论(0)