Git 系列之四:Git 進階功能

【TIP】在我們的《Windows 下 Git 配置與使用指南》 中,有介紹大家使用 $ git go 命令。其實,這並非 Git 的原生命令,它是我們自定義的一個 alias(別名),由 $git add、$git commit、$git push 和 $git pull 四個命令組合而成。待熟悉之後,你可以直接使用這些原生命令,或者自定義更適合自己的 alias。

add

添加新文件到 Git 代碼倉庫的索引中
$ git add filename

mv

移動或重命名文件
$ git mv old-filename new-filename

rm

從工作目錄和 Git 代碼索引中刪除文件
$ git rm filename

status

查看目前工作目錄的代碼狀態,自上次提交以來的添加、修改和刪除等
$ git status

diff

查看自上次提交以來,本地代碼改動的具體情況
$ git diff

commit

提交修改的代碼(只是提交到本地的代碼庫,不會推送到服務器)
$ git commit -am '修改說明'
如果覺得剛提交的“修改說明”寫得不夠好,可輸入以下命令調整
$ git commit --amend

push

將自上次 push 以來的,本地歷次 commit,推送到服務器
結合我們的實際,應該這樣寫:
$ git push origin master:your-id
其中,master 是本地的分支名;your-id 填你在服務器上的 id,服務器的版本庫裏會有以你的 id 爲名稱的分支。

pull

將別人推送到服務器的代碼,拉到你的機器裏
$ git pull

log

查看修改記錄,含作者、時間、修改說明等
$ git log

show

顯示具體的代碼改動情況

顯示最後一次 commit 修改的內容:

$ git show

顯示指定 commit 修改的內容:

【TIP】git log 命令中,每條 commit 會有一長長的字符串,此即 commid id,取其前面五六位即可。
$ git show commit-id

branch

分支管理

列出所有分支(當前所在分支前會有“*”號):

$ git branch

新建分支:

$ git branch 新分支名

刪除分支:

$ git branch -d 欲刪除的分支名
【注意!】不要把 ‘-d’ 寫成了 ‘-D’,危險!
  • -d:要求:被刪除分支的所有修改,已經合併到當前分支;
  • -D:直接刪除,未合併的代碼,將被丟棄!

checkout

恢復某個已修改的文件(撤銷未提交的修改):

$ git checkout file-name

切換到另外的分支,進行開發:

$ git checkout branch-name
【注意!】該命令可能伴隨大量的文件增刪/修改。Windows 下,改動已被佔用的文件可能會被拒絕,導致版本庫出現嚴重問題。如果確實要這樣做,安全起見,最好先註銷一次。

merge

合併指定分支到當前分支:
$ git merge branch-name

revert

還原已提交的修改(已經提交過的修改,可以反悔~)

還原最近一次提交的修改:

$ git revert HEAD

還原指定版本的修改:

$ git revert commit-id

stash

先將未提交的修改暫存起來,接着清除所有改動,使之與沒修改時一樣。
若你正在開發功能 A,又需立即去開發功能 B。A 的代碼正改到一半,未認真整理,你不想立即提交。此時……請呼叫 stash ~。

它會使你所有未提交的修改瞬間不見了:

$ git stash

它會使剛剛不見了的修改,瞬間又回來了:

$ git stash pop
【TIP】以上命令皆有更多參數,另有一些 Git 命令我們此處沒有介紹。但是,這已足令你使用 Git 時遊刃有餘,你會覺得,Git 簡直是一件神器!:-)
【TIP】’$ git help’ 與 ‘$ git help 命令名’ 會在你需要的時候,無私地幫助你。:-)

附:git push 失敗的解決辦法

假設執行操作:
1. 修改代碼
2. git commit
3. git push
此時 push 失敗(錯誤提示:! [rejected] master -> master (non-fast-forward) )
解決辦法:
$ git pull
若成功,則:
$ git push origin master:your-id
完事。
若失敗(提示:CONFLICT (content): Merge conflict in 文件名),則:
衝突的文件會有類似下面的代碼塊:
<<<<HEAD
你修改的代碼
============
其他人修改的代碼
>>>>>commit id of others'
考慮你和他人對代碼的修改,更新成合適的內容,並刪除 <<<、===、>>> 3行標記符號,保存文件。
$ git commit -am "resolve conflict"
$ git push origin master:your-id
更詳細的說明,可以閱讀 $git push –help 該文檔的 NOTE ABOUT FAST-FORWARDS 一節。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章