1. 程式人生 > >git常用命令以及使用技巧整理

git常用命令以及使用技巧整理

再次 跳過 忽略 har foo init 方括號 file pan

git config --global <attr-name> <attr-value> 配置git信息,如果使用了 --global 選項,全局屬性將默認被使用,除非此屬性被局部屬性覆蓋。當你想針對特定項目使用不同的配置信息時,可以在那個項目目錄下運行沒有 --global 選項的命令來配置。
git config --list 列出所有 Git 當前能找到的配置
git config <key> 檢查 Git 的某一項配置
//3種獲取幫助方式
git help <verb>
git <verb> --help
man git-<verb>
git init 在現有目錄中初始化倉庫
git clone [url] 克隆現有的倉庫,url後面可以自定義本地倉庫的名字
git status 檢查當前文件狀態
git status -s/git status --short 狀態簡覽
git add 添加內容到下一次提交中
git diff 查看修改之後還沒有暫存起來的變化內容
git diff --staged 查看已暫存的將要添加到下次提交裏的內容
git commit -m "本次提交的描述信息" 提交更新,提交時記錄的是放在暫存區域的快照。 任何還未暫存的仍然保持已修改狀態,可以在下次提交時納入版本管理(-m選項可選,不指定時使用git默認配置的編輯器進行輸入描述信息,加上 -a 選項,Git 就會自動把所有已經跟蹤過的文件暫存起來一並提交,從而跳過 git add 步驟,有時候我們提交完了才發現漏掉了幾個文件沒有添加,或者提交信息寫錯了。 此時,可以運行帶有 --amend 選項的提交命令嘗試重新提交)
git rm 移除文件,從已跟蹤文件清單中移除,並連帶從工作目錄中刪除指定的文件,如果刪除之前修改過並且已經放到暫存區域的話,則必須要用強制刪除選項 -f(譯註:即 force 的首字母),你想讓文件保留在磁盤,但是並不想讓 Git 繼續跟蹤,使用 --cached 選項
git mv file1 file2 移動文件
git log 查看提交歷史,此命令有多個可選參數可用於控制輸出結果
git reset HEAD file 取消暫存的文件,在調用時加上 --hard 選項可以令 git reset 成為一個危險的命令(譯註:可能導致工作目錄中所有當前進度丟失!),不加選項地調用git reset 並不危險 — 它只會修改暫存區域
git checkout -- [file] 撤消對文件的修改,你需要知道 git checkout -- [file] 是一個危險的命令,這很重要。 你對那個文件做的任何修改都會消失 - 你只是拷貝了另一個文件來覆蓋它
git remote 查看你已經配置的遠程倉庫服務器,指定選項 -v,會顯示需要讀寫遠程倉庫使用的 Git 保存的簡寫與其對應的 URL
git remote add <shortname> <url> 添加一個新的遠程 Git 倉庫庫,同時指定一個你可以輕松引用的簡寫
git fetch [remote-name] 從遠程倉庫中獲得數據,這個命令會訪問遠程倉庫,從中拉取所有你還沒有的數據, 執行完成後,你將會擁有那個遠程倉庫中所有分支的引用,可以隨時合並或查看。 必須註意 git fetch 命令會將數據拉取到你的本地倉庫 - 它並不會自動合並或修改你當前的工作。 當準備好時你必須手動將其合並入你的工作
git pull [remote-name] 自動的抓取然後合並遠程分支到當前分支
git push [remote-name] [branchname] 推送到遠程倉庫
git remote show [remote-name] 查看遠程倉庫
git remote set-url <name> <newurl> 更改遠程倉庫的url
git remote rename [remote-name] [remote-name2] 遠程倉庫的重命名
git remote rm [remote-name] 移除一個遠程倉庫
git tag 列出標簽, 如果只對 1.8.5系列感興趣執行git tag -l ‘v1.8.5*‘進行篩選
git tag -a v1.4 -m ‘my version 1.4‘ 創建附註標簽,-m 選項指定了一條將會存儲在標簽中的信息
git show [tag-name] 查看標簽信息
git tag v1.4-lw 創建輕量標簽
git tag -a v1.2 9fceb02 要在某個提交上打標簽,你需要在命令的末尾指定提交的校驗和(或部分校驗和)
git push origin [tagname] 推送標簽到共享服務器上,如果想要一次性推送很多標簽,也可以使用帶有 --tags 選項的 git push 命令。 這將會把所有不在遠程倉庫服務器上的標簽全部傳送到那裏
git checkout -b [branchname] [tagname] 如果你想要工作目錄與倉庫中特定

的標簽版本完全一樣,可以使用這個命令在特定的標簽上創建一個新分支,這樣就能檢出這個特定的標簽了(這其實是創建了一個分支)。

git團隊協作流程:
clone遠程倉庫到本地->pull遠程倉庫數據時如果本地倉庫與遠程倉庫修改了同一個文件,需要先commit再pull(pull只能自動合並已提交狀態的文件)->pull拉取遠程倉庫數據並合並[->如果有沖突要解決沖突->沖突解決後commit->再次pull看看是否是最新數據]->最後push

手動解決沖突:
任何因包含合並沖突而有待解決的文件,都會以未合並狀態標識出來。 Git 會在有沖突的文件中加入標準的沖突解決標記,這樣你可以打開這些包含沖突的文件然後手動解決沖突。 出現沖突的文件會包含一些特殊區段,看起來像下面這個樣子:
<<<<<<< HEAD:index.html
<div id="footer">contact : [email protected]</div>
=======
<div id="footer">
?please contact us at [email protected]
</div>
>>>>>>> iss53:index.html
這表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因為你在運行 merge 命令的時候已經檢出到了這個分支)在這個區段的上半部分(======= 的上半部分),而 iss53 分支所指示的版本在 ======= 的下半部分。 為了解決沖突,你必須選擇使用由 =======分割的兩部分中的一個,或者你也可以自行合並這些內容。 例如,你可以通過把這段內容換成下面的樣子來解決沖突:
<div id="footer">
please contact us at [email protected]
</div>
上述的沖突解決方案僅保留了其中一個分支的修改,並且 <<<<<<< , ======= , 和 >>>>>>> 這些行被完全刪除了。 在你解決了所有文件裏的沖突之後,對每個文件使用 git add 命令來將其標記為沖突已解決。 一旦暫存這些原本有沖突的文件,Git 就會將它們標記為沖突已解決。

文件.gitignore格式規範如下:
所有空行或者以 # 開頭的行都會被 Git 忽略。
可以使用標準的 glob 模式匹配。
匹配模式可以以(/)開頭防止遞歸。
匹配模式可以以(/)結尾指定目錄。
要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反
所謂的 glob 模式是指 shell 所使用的簡化了的正則表達式。 星號(*)匹配零個或多個任意字符;[abc] 匹配任何一個列在方括號中的字符(這個例子要麽匹配一個 a,要麽匹配一個 b,要麽匹配一個 c);問號(?)只匹配一個任意字符;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符範圍內的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數字)。 使用兩個星號(*) 表示匹配任意中間目錄,比如`a/**/z` 可以匹配 a/z, a/b/z 或 `a/b/c/z`等。

git常用命令以及使用技巧整理