Git

文件的操做git

git status         //查看狀態github

git add 文件名     //提交文件到暫存區緩存

git add .             //提交修改的文件到暫存區服務器

git commit -m "commitmessage"  [filename]    //「」內備註信息,【】文件名,提交到本地庫app

git co -- <file> # 拋棄工做區修改svn

 

git co . # 拋棄工做區修改fetch

 

git rm <file> # 從版本庫中刪除文件ui

 

git rm <file> --cached # 從版本庫中刪除文件,但不刪除文件url

 

git reset <file> # 從暫存區恢復到工做文件spa

 

git reset -- . # 從暫存區恢復到工做文件

 

git reset --hard # 恢復最近一次提交過的狀態,即放棄上次提交後的全部本次修改

 

git ci --amend # 修改最後一次提交記錄

 

git revert <$id> # 恢復某次提交的狀態,恢復動做自己也建立次提交對象

 

git revert HEAD # 恢復最後一次提交的狀態

查看提交記錄

git log git log <file> # 查看該文件每次提交記錄

git log -p <file> # 查看每次詳細修改內容的diff

git log -p -2 # 查看最近兩次詳細修改內容的diff

git log --stat #查看提交統計信息

Git 本地分支管理

查看、切換、建立和刪除分支

git br -r # 查看遠程分支

git br <new_branch> # 建立新的分支

git br -v # 查看各個分支最後提交信息

git br --merged # 查看已經被合併到當前分支的分支

git br --no-merged # 查看還沒有被合併到當前分支的分支

git co <branch> # 切換到某個分支

git co -b <new_branch> # 建立新的分支,而且切換過去

git co -b <new_branch> <branch> # 基於branch建立新的new_branch

git co $id # 把某次歷史提交記錄checkout出來,但無分支信息,切換到其餘分支會自動刪除

git co $id -b <new_branch> # 把某次歷史提交記錄checkout出來,建立成一個分支

git br -d <branch> # 刪除某個分支

git br -D <branch> # 強制刪除某個分支 (未被合併的分支被刪除的時候須要強制)

 分支合併和rebase

git merge <branch> # 將branch分支合併到當前分支

git merge origin/master --no-ff # 不要Fast-Foward合併,這樣能夠生成merge提交

git rebase master <branch> # 將master rebase到branch,至關於: git co <branch> && git rebase master && git co master && git merge <branch>

 Git暫存管理

git stash # 暫存

git stash list # 列全部stash

git stash apply # 恢復暫存的內容

git stash drop # 刪除暫存區

Git遠程分支管理

git pull # 抓取遠程倉庫全部分支更新併合併到本地

git pull --no-ff # 抓取遠程倉庫全部分支更新併合併到本地,不要快進合併

git fetch origin # 抓取遠程倉庫更新

git merge origin/master # 將遠程主分支合併到本地當前分支

git co --track origin/branch # 跟蹤某個遠程分支建立相應的本地分支

git co -b <local_branch> origin/<remote_branch> # 基於遠程分支建立本地分支,功能同上

git push # push全部分支

git push origin master # 將本地主分支推到遠程主分支

git push -u origin master # 將本地主分支推到遠程(如無遠程主分支則建立,用於初始化遠程倉庫)

git push origin <local_branch> # 建立遠程分支, origin是遠程倉庫名

git push origin <local_branch>:<remote_branch> # 建立遠程分支

git push origin :<remote_branch> #先刪除本地分支(git br -d <branch>),而後再push刪除遠程分支

Git遠程倉庫管理

GitHub

git remote -v # 查看遠程服務器地址和倉庫名稱

git remote show origin # 查看遠程服務器倉庫狀態

git remote add origin git@ github:robbin/robbin_site.git # 添加遠程倉庫地址

git remote set-url origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址(用於修改遠程倉庫地址) git remote rm <repository> # 刪除遠程倉庫

建立遠程倉庫

git clone --bare robbin_site robbin_site.git # 用帶版本的項目建立純版本倉庫

scp -r my_project.git git@ git.csdn.net:~ # 將純倉庫上傳到服務器上

mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服務器建立純倉庫

git remote add origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址

git push -u origin master # 客戶端首次提交

git push -u origin develop # 首次將本地develop分支提交到遠程develop分支,而且track

git remote set-head origin master # 設置遠程倉庫的HEAD指向master分支

也能夠命令設置跟蹤遠程庫和本地庫

git branch --set-upstream master origin/master

git branch --set-upstream develop origin/develop

git init
     在本地新建一個repo,進入一個項目目錄,執行git init,會初始化一個repo,並在當前文件夾下建立一個.git文件夾.
git clone
     獲取一個url對應的遠程Git repo, 建立一個local copy.
     通常的格式是git clone [url].
     clone下來的repo會以url最後一個斜線後面的名稱命名,建立一個文件夾,若是想要指定特定的名稱,能夠git clone [url] newname指定.
git status
     查詢repo的狀態.
     git status -s: -s表示short, -s的輸出標記會有兩列,第一列是對staging區域而言,第二列是對working目錄而言.
git add
     在提交以前,Git有一個暫存區(staging area),能夠放入新添加的文件或者加入新的改動. commit時提交的改動是上一次加入到staging area中的改動,而不是咱們disk上的改動.
     git add .
     會遞歸地添加當前工做目錄中的全部文件.
git commit
     提交已經被add進來的改動.
     git commit -m 「the commit message"
     git commit -a 會先把全部已經track的文件的改動add進來,而後提交(有點像svn的一次提交,不用先暫存). 對於沒有track的文件,仍是須要git add一下.
     git commit --amend 增補提交. 會使用與當前提交節點相同的父節點進行一次新的提交,舊的提交將會被取消.
git rm
     git rm file: 從staging區移除文件,同時也移除出工做目錄.
     git rm --cached: 從staging區移除文件,但留在工做目錄中.
     git rm --cached從功能上等同於git reset HEAD,清除了緩存區,但不動工做目錄樹.
git clean
     git clean是從工做目錄中移除沒有track的文件.
     一般的參數是git clean -df:
     -d表示同時移除目錄,-f表示force,由於在git的配置文件中, clean.requireForce=true,若是不加-f,clean將會拒絕執行.
git branch
     git branch能夠用來列出分支,建立分支和刪除分支.
     git branch -v能夠看見每個分支的最後一次提交.
     git branch: 列出本地全部分支,當前分支會被星號標示出.
     git branch (branchname): 建立一個新的分支(當你用這種方式建立分支的時候,分支是基於你的上一次提交創建的). 
     git branch -d (branchname): 刪除一個分支.
     刪除remote的分支:
     git push (remote-name) :(branch-name): delete a remote branch.
     這個是由於完整的命令形式是:
     git push remote-name local-branch:remote-branch
     而這裏local-branch的部分爲空,就意味着刪除了remote-branch
git fetch
     download new branches and data from a remote repository.
     能夠git fetch [alias]取某一個遠程repo,也能夠git fetch --all取到所有repo
     fetch將會取到全部你本地沒有的數據,全部取下來的分支能夠被叫作remote branches,它們和本地分支同樣(能夠看diff,log等,也能夠merge到其餘分支),可是Git不容許你checkout到它們. 
 
git pull
     fetch from a remote repo and try to merge into the current branch.
     pull == fetch + merge FETCH_HEAD
     git pull會首先執行git fetch,而後執行git merge,把取來的分支的head merge到當前分支.這個merge操做會產生一個新的commit.    
     若是使用--rebase參數,它會執行git rebase來取代原來的git merge.
  
 
git rebase
     --rebase不會產生合併的提交,它會將本地的全部提交臨時保存爲補丁(patch),放在」.git/rebase」目錄中,而後將當前分支更新到最新的分支尖端,最後把保存的補丁應用到分支上.
     rebase的過程當中,也許會出現衝突,Git會中止rebase並讓你解決衝突,在解決完衝突以後,用git add去更新這些內容,而後無需執行commit,只須要:
     git rebase --continue就會繼續打餘下的補丁.
     git rebase --abort將會終止rebase,當前分支將會回到rebase以前的狀態.
 
git push
     $ git push -u origin master -f    //強制提交
     push your new branches and data to a remote repository.
     git push [alias] [branch]
     將會把當前分支merge到alias上的[branch]分支.若是分支已經存在,將會更新,若是不存在,將會添加這個分支.
     若是有多我的向同一個remote repo push代碼, Git會首先在你試圖push的分支上運行git log,檢查它的歷史中是否能看到server上的branch如今的tip,若是本地歷史中不能看到server的tip,說明本地的代碼不是最新的,Git會拒絕你的push,讓你先fetch,merge,以後再push,這樣就保證了全部人的改動都會被考慮進來.
 
git reflog
     git reflog是對reflog進行管理的命令,reflog是git用來記錄引用變化的一種機制,好比記錄分支的變化或者是HEAD引用的變化.
     當git reflog不指定引用的時候,默認列出HEAD的reflog.
     HEAD@{0}表明HEAD當前的值,HEAD@{3}表明HEAD在3次變化以前的值.
     git會將變化記錄到HEAD對應的reflog文件中,其路徑爲.git/logs/HEAD, 分支的reflog文件都放在.git/logs/refs目錄下的子目錄中.
相關文章
相關標籤/搜索