1. vscode git拉取報錯 在簽出前,請清理存儲庫工作樹
原因:出現這個問題的原因是因爲本地修改的文件和遠程的某些文件存在衝突。
解決方法:
- 先提交commit本地文件到本地倉庫。
- 然後拉取遠程代碼。拉取後會提示你某些文件存在衝突,需要合併文件解決衝突。
- 解決後再次提交代碼到本地倉庫。
- 最後push推送本地倉庫修改文件到遠程倉庫。
2. git上不同分支merge(合併)某次提交
切換到要合併的分支然後:
git cherry-pick a5965d(這個編號是Commit ID)
例子:
B分支上要合併A分支上的提交ID爲123456的所有文件,首先切換到B分支,然後執行git cherry-pick 123456
。合併後B分支上對應的文件就做出了相應的修改。然後提交推送就OK了。
3. git從其他分支merge個別文件
git checkout master // 先切換到合併的分支上
git checkout develop function1.js // 合併develop分支上的function1.js
4. 撤銷上次git commit 但是未git push的修改
git reset HEAD
//重置到當前版本,相當於不做任何操作
git reset HEAD^
//重置到上次,mac中zsh用需要轉義使用:HEAD\^
git reset HEAD^^
//重置到上上次,mac中zsh用需要轉義使用:HEAD\^\^
reset意思是重置到哪個版本,不是重置哪個版本。
--mixed
意思是:不刪除工作空間改動代碼,撤銷commit,並且撤銷git add . 操作
這個爲默認參數,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一樣的。
--soft
不刪除工作空間改動代碼,撤銷commit,不撤銷git add .
--hard
刪除工作空間改動代碼,撤銷commit,撤銷git add .
4. 撤銷git commit 但是未git push的修改
-
找到你想撤銷的commit_id
git log
-
完成撤銷,同時將代碼恢復到前一commit_id 對應的版本。
git reset --hard commit_id
-
完成Commit命令的撤銷,但是不對代碼修改進行撤銷,可以直接通過git commit 重新提交對本地代碼的修改。
git reset commit_id
5. 撤銷git commit 已經git push的修改
- 首先撤銷本地修改
git reset --hard commit_id
- 然後推送push到遠端倉庫
git push --force
因爲撤銷本地修改後,本地倉庫版本落後於遠程倉庫版本,所以需要使用--force
強制覆蓋遠程倉庫
7. 提交了以後,可以使用 git revert
還原已經提交的修改
此次操作之前和之後的commit和history都會保留,並且把這次撤銷作爲一次最新的提交
git revert HEAD
撤銷前一次 commit
git revert HEAD^
撤銷前前一次 commit
git revert commit-id
(撤銷指定的版本,撤銷也會作爲一次提交進行保存)
git revert
是提交一個新的版本,將需要revert的版本的內容再反向修改回去,版本會遞增,不影響之前提交的內容。
6. commit註釋寫錯了,想改一下注釋
git commit --amend
此時會進入默認vim編輯器,修改註釋完畢後保存就好了
7. 撤銷本地修改,沒有提交的文件
git checkout .
//還原所有文件
git checkout <path+filename/dir>
//撤銷某個文件的本地修改
8. git刪除遠程分支,本地還能看見這個分支
其他人刪除了遠程上的分支,我在本地還能看見遠程上的這個分支。
例如: A人操作一下命令刪除了遠程上的分支bug_xzx。但是B還能看見遠程分支bug_xzx,但不可用。
1、查看所有分支
git branch -a
2、查看當前所在分支
git branch
3、刪除本地的bug_xzx分支
git branch -D bug_xzx
4、刪除遠程的bug_xzx分支
git push origin --delete bug_xzx
此時B需要進行一下操作刪除遠程分支:
1、可以看到刪除分支情況
git remote show origin
2、刪除遠程倉庫不存在的分支
git remote prune origin
再執行
git branch -a
就可以看到已經看不見已經刪除的分支了
9. 獲取最新的遠程分支
將本地遠程跟蹤分支進行更新,與遠程分支保持一致(別人新建了遠程分支可以用fetch命令進行本地更新)
get fetch
10. 切換遠程倉庫地址
git remote set-url origin url