git命令有点多,选项就更多了,别说初学者无所适从,作为老鸟,如果长期使用ui界面操作,或者一段时间不用命令行也是晕头转向。我呢,就是常年使用idea的ui界面操作git,突然切换vscode,界面和操作方式和之前idea不太一样,用起来很不适应,只好重新把命令行学起来。命令行有一个好处,无论是vscode,还是idea,抑或是其他的什么ide,都可以“一招吃遍”。
大部分企业通常仓库会有一个主分支master,大家基于主分支拉取自己的开发分支,修改代码,然后提交,最后合并到master分支。
常规流程基本上就是:创建分支——>更新代码——>提交代码——>删除分支。
# 查看本地分支git branch# 创建本地分支并切换git branch branch_name origin/mastergit checkout branch_name# 或者一步到位git checkout -b branch_name origin/master
除非个人仓库可以使用git pull origin master
,其他多人合作的代码库,我建议一律采用先fetch后rebase的方式更新代码。
# 拉取最新代码git fetch origin master# 查看本地当前代码与远程主库区别,如果只想看commit,去掉-pgit log -p HEAD..origin/master# 将当前代码变基到远程主库上git rebase origin/master
如果代码rebase有冲突,先解决冲突,然后执行继续变基。
git rebase --continue
git statusgit add some_code_filesgit commit -m "commit message"git push
# 删除本地分支git branch -d branch_name# 忽略未合并的commit强制删除本地分支git branch -D branch_name # 删除远端分支git push origin :branch_name
# 上个版本git reset HEAD^# 上两个版本git reset HEAD^^# 或git reset HEAD~1git reset HEAD~2
回退到某个commit
# commit id前7位git reset 69fde2c
如果写着写着,突然发现有个代码在上一commit中忘了添加了,想追加进去,那可以使用
git add forgot_file# 如果是最后一条可以用git commit -m "commit msg" --amend# 如果这些commit已经推送到远端了,要使用force推送覆盖git push --force-with-lease
如果写代码写的比较忘我,提交的也不亦乐乎,可能会形成许多零碎的commit,看着很不美观,这时候你可以
# 修改最后n个提交git rebase -i HEAD~n# 如果这些commit已经推送到远端了,要使用force推送覆盖git push --force-with-lease
git log -p -- src/main.cppgit log -p -- src/some_path