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