1.合并后发现合并错了怎么办?
git merge --abort //终止合并
。
2.想合并某一次提交怎么办?
切换到想要合并的分支: git cherry-pick + 要合并某次提交的index
;例如: git cherry-pick 62ecb3
。
3.怎么暂存当前不想提交的代码?
git stash
可用来暂存当前正在进行的工作;git stash save
备注信息;git stash pop
恢复暂存区的内容;git stash list
命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用git stash apply stash@{1}
就可以将你指定版本号为stash@{1}
的工作取出来,当你将所有的栈都应用回来的时候,可以使用git stash clear
来将栈清空。
4.*git里的lf和crlf换行符自动转换
- 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
- 提交时转换为LF,检出时不转换
git config --global core.autocrlf input
- 提交检出均不转换
git config --global core.autocrlf false
5.git如何关联远程分支和本地分支?
关联分支的好处,可以直接使用git pull, git push
等命令简化操作,减少代码提交的失误等; 当我们在本地新建一个叫dev-test的分支的时候,我们希望他与git的远程上的某个分支进行关联。 刚好远程也有一个dev-test分支 git branch --set-upstream-to origin/devtest devtest
远程分支在前,本地分支在后。 git 查看当前分支关联:
git branch -vv
git config --list
6.本地修改提交到暂存区了,想撤回怎么撤回?
git reset HEAD <file>
将暂存区撤回(commit撤回);工作区也想撤回使用git checkout <file>
,此命令一般用于修改本地暂存区,不影响远程库,写错代码完全撤回,操作不可逆。git revert 62ecb3
一般用于远程库撤销某次操作(push撤回),撤销到某个commit之前,revert后会重新做一次提交,head向前。
7.*使用git revert会出现的问题
因为git revert
是用新提交覆盖旧提交,因此,被覆盖的提交等于不会被采用了。如果两个分支(假设是master和A分支)先合并再用revert回滚,之后又合并(A合并到master),就会发现在master分支上,A分支第一次合并之前的修改大部分不见了。这是因为从时间的发生顺序来看,A分支第一次合并之前的修改发生在revert之前,revert发生在后,而 revert抛弃了A第一合并之前的修改,那么再合并Git就认为你永远抛弃了A第一次之前的修改。要解决这个问题,需要把revert产生的提交再revert一次。