首先有個問題,基本上所有使用過git命令的人都會有這樣的一個疑問:
1.你本地的代碼是最新的,在此基礎上修改,(可以使用 git diff 查看修改),這樣的前提下,使用 git pull 爲什麼不會覆蓋本地修改的代碼?換句話說就是: git pull 爲什麼不能撤銷在最新的代碼上做出的修改?(雖然這個問題合乎邏輯,但是需要揣摩)
這個問題好幾個人都問過我,我是這樣解釋的: git 命令是根據commit ID更新的,這個commit ID就是一系列算法生成的,根據這個反查代碼非常好用,每次 git pull 的時候,會根據commit ID依次拉取代碼,這個commit ID會跟本地的 commit ID 做出比較,如果相同的話,是不會繼續拉取代碼的,這樣如果是最新的代碼,生成的 commit ID 是相同的,所以咯,你本地的修改並不會被覆蓋。
git 常用命令:
1.強制撤銷本地操作並切換分支。
git reset --hard HEAD^^(這個符號代表向前的commit Id數量,0個表示退到上一個commit Id,依次類推)
git checkout (你的遠程分支名) -B (你打算起的指向這個遠程分支的本地名)
這樣就強制切換過來了
2.查看代碼修改
通常我們需要查看誰對代碼做了修改,並諮詢相關人事這樣做的原因:
git blame (你想查看的文件) | grep '(粘貼你想查看代碼那行的其中一部分)',然後終端會顯示這個commit Id,以及詳細信息。
git show (剛纔看到的commit Id) 查看具體的代碼修改
3.保存工作狀態(有時候需要保存對當前分支的工作狀態,然後切換到另外的分支上操作緊急的內容)
git stash save (寫你的註釋) 保存當前工作狀態到隊列裏
git stash list 查看當前所有保存的工作狀態
git stash apply (你的隊列名字) 恢復現場 (這裏需要說明的是 apply時注意分支問題,分支不對會報錯)
4.刪除遠程分支
git push param1(遠程主機名) --delete param2(遠程分支名字)
eg:git push origin --delete branch1
5.重置git遠程倉庫地址
git remote set-url param1(遠程主機名) param2(git地址)
eg:git remote set-url origin (從遠程項目複製的那個地址)
6.本地分支和遠程分支建立聯繫
git branch --set-upstream-to param1(遠程主機/遠程分支名字) param2(本地分支,省略的話,就是當前分支)
eg1:git branch --set-upstream-to origin/branch1 :本地當前分支和遠程branch1建立聯繫
eg2:git branch --set-upstream-to origin/branch2 branch2 :本地分支branch2和遠程分支branch2建立聯繫