Git常見場景解決方法總結
- 2019 年 12 月 20 日
- 筆記

放棄某次merge
假如你merge的時候產生了很大的衝突,想先放棄某次merge,你可以:
- git merge –abort 或
- git reset HEAD 或
- git checkout HEAD
分支修改切換
在非目的分支上做了修改,想切換回目的分支
還未添加到暫存區/已添加到暫存區還未提交
1. 新建臨時分支, git checkout-b new_branch,這樣改動會被帶到新分支。
然後把非目的分支的修改用 git checkout.恢復。
2. 先 git stash,然後切換到目的分支(git checkout 【target-branch】),在目的分支 git stash pop即可。
這種方式最好理解,就是把改動先放到一個臨時區域,讓git先別管,到了正確的分支再拿出來。
已提交到本地倉庫
這種情況就要有reset了,用 git reset HEAD^撤銷最近一次提交,如果有多次提交的話,查找到對應提交id進行reset就行。
git默認的是mixed模式,即撤銷暫存區,保留工作區。
這樣你再切分支也還能把改動帶過去。
當然加–soft也可以,這樣能保留暫存區和工作區。
已push到遠程倉庫
如果很不幸你已經把誤修改給push了,你需要用到revert命令,先用 git log
查找到你誤提交的commitId,然後 git revert commitId
,產生一次逆向提交,來對衝掉之前的。之後再push到遠程就可以了。
git忽略不提交文件
從未提交過的文件
這種最簡單,直接把想忽略的文件加入 .gitignore
中忽略提交即可.
已經推送(push)過的文件
已經推送(push)過的文件,想刪除本地文件,並將刪除這個操作更新到遠程文件,
git rm -r --cached .git add .git commit -m 'update .gitignore'git push -u origin master
已經推送(push)過的文件,想從git遠程庫中刪除,並在以後的提交中忽略,但是卻還想在本地保留這個文件,可以使用
$git rm --cached pages/index.wxml
已經推送(push)過的文件,想在以後的提交時忽略此文件(即使本地對該文件修改過也不同提交新修改),並且不刪除git遠程庫中相應文件,可以使用
$git update-index --assume-unchanged pages/index.wxml
如果要忽略的是一個目錄,則打開 git bash,cd到 目標目錄下
$git update-index --assume-unchanged $(git ls-files | tr 'n' ' ')
提交分支代碼
- 在當前分支下,第一次push,
git push --set-upstream origin [branch]
這樣設置一次之後,後面就直接 git push
即可。
- 不在當前分支下,
// git push <遠程主機名> <本地分支名>:<遠程分支名>git push origin feature_abc:feature_abc
分支代碼操作常用命令
- 列出所有本地分支
git branch
- 列出所有遠程分支
git branch -r
- 列出所有本地分支和遠程分支
git branch -a
- 新建一個分支,但依然停留在當前分支
git branch [branch-name]
- 新建一個分支,並切換到該分支
git checkout -b [branch]
- 新建一個分支,與指定的遠程分支建立追蹤關係
git branch --track [branch] [remote-branch]
- 切換到指定分支,並更新工作區
git checkout [branch-name]
- 切換到上一個分支
git checkout -
- 合併指定分支到當前分支
git merge [branch]
- 刪除分支
git branch -d [branch-name]
- 刪除遠程分支
git push origin --delete [branch-name]git branch -dr [remote/branch]
- 拉取所有分支代碼
git fetch