Git 小結

本篇文章是摘抄廖雪峰老師 git 教程中的小結部分

其 git 教程的傳送門:
Git教程
Git 的官方網站:
http://git-scm.com
國外網友制作的 Git Cheat Sheet,建議打印出來備用:
Git Cheat Sheet

圖片來源于網絡

1. 創建版本庫

  • 初始化一個 Git 倉庫,使用 git init 命令。
  • 添加文件到 Git 倉庫,分兩步:
    (1)第一步,使用命令 git add <file>,注意,可反復多次使用,添加多個文件;
    (2)第二步,使用命令 git commit,完成。

2. 時光穿梭機

  • 要隨時掌握工作區的狀態,使用 git status 命令。
  • 如果 git status 告訴你有文件被修改過,用 git diff 可以查看修改內容。
2.1 版本退回
  • HEAD 指向的版本就是當前版本,因此,Git 允許我們在版本的歷史之間穿梭,使用命令 git reset --hard commit_id
  • 穿梭前,用 git log 可以查看提交歷史,以便確定要回退到哪個版本。
  • 要重返未來,用 git reflog 查看命令歷史,以便確定要回到未來的哪個版本。
2.2 工作區和暫存區

暫存區是Git非常重要的概念

2.3 管理修改
  • 每次修改,如果不add到暫存區,那就不會加入到 commit 中。
2.4 撤銷修改
  • 場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令 git checkout -- file注:git checkout -- file 命令中若沒有 --,就變成了“切換到另一個分支”的命令)。
  • 場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令 git reset HEAD file,就回到了場景1,第二步按場景1操作。
  • 場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。
2.5 刪除文件
  • 確實要從版本庫中刪除該文件,那就用命令 git rm file 刪掉,并且 git commit;
  • 若刪錯了,可以用 ** git checkout -- file** 把誤刪的文件從版本庫里恢復到最新版本
    git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”)。
  • 命令 git rm 用于刪除一個文件。如果一個文件已經被提交到版本庫,那么你永遠不用擔心誤刪,但是要小心,你只能恢復文件到最新版本,你會丟失最近一次提交后你修改的內容。

3. 遠程倉庫

3.1 添加遠程庫
  • 要關聯一個遠程庫,使用命令 git remote add origin git@server-name:path/repo-name.git
  • 關聯后,使用命令 git push -u origin master 第一次推送master分支的所有內容;
  • 此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;
3.2 從遠程庫克隆
  • 要克隆一個倉庫,首先必須知道倉庫的地址,然后使用 git clone 命令克隆。
  • Git 支持多種協議,包括 https,但通過 ssh 支持的原生 git 協議速度最快。

4. 分支管理

4.1 創建與合并分支
  • 查看分支:git branch
  • 創建分支:git branch <name>
  • 切換分支:git checkout <name>
  • 創建+切換分支:git checkout -b <name>
  • 合并某分支到當前分支:git merge <name>
  • 刪除分支:git branch -d <name>
4.2 解決沖突
  • 當 Git 無法自動合并分支時,就必須首先解決沖突。解決沖突后,再提交,合并完成。
  • git log --graph 命令可以看到分支合并圖。
4.3 分支管理策略
  • 合并分支時,加上 --no-ff 參數就可以用普通模式合并,合并后的歷史有分支,能看出來曾經做過合并,而 fast forward 合并就看不出來曾經做過合并。
4.4 Bug分支
  • 修復 bug 時,我們會通過創建新的 bug分支 進行修復,然后合并,最后刪除;
  • 當手頭工作沒有完成時,先把工作現場 git stash 一下,然后去修復bug,修復后,再 git stash pop,回到工作現場。
4.5 Feature分支
  • 開發一個新 feature,最好新建一個分支;
  • 如果要丟棄一個沒有被合并過的分支,可以通過 git branch -D <name> 強行刪除。
4.6 多人協作
  • 查看遠程庫信息,使用 git remote -v
  • 本地新建的分支如果不推送到遠程,對其他人就是不可見的;
  • 從本地推送分支,使用 git push origin branch-name,如果推送失敗,先用 git pull 抓取遠程的新提交;
  • 在本地創建和遠程分支對應的分支,使用 git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致;
  • 建立本地分支和遠程分支的關聯,使用 git branch --set-upstream branch-name origin/branch-name
  • 從遠程抓取分支,使用 git pull,如果有沖突,要先處理沖突。

5. 標簽管理

5.1 創建標簽
  • 命令 git tag <name> 用于新建一個標簽,默認為 HEAD,也可以指定一個commit id;
  • git tag -a <tagname> -m "blablabla..."可以指定標簽信息;
  • git tag -s <tagname> -m "blablabla..."可以用PGP簽名標簽;
  • 命令 git tag 可以查看所有標簽。
5.2 操作標簽
  • 命令 git push origin <tagname> 可以推送一個本地標簽;
  • 命令 git push origin --tags 可以推送全部未推送過的本地標簽;
  • 命令 git tag -d <tagname> 可以刪除一個本地標簽;
  • 命令 git push origin :refs/tags/<tagname> 可以刪除一個遠程標簽。

6. 自定義Git

6.1 忽略特殊文件
  • 忽略某些文件時,需要編寫 .gitignore
  • .gitignore 文件本身要放到版本庫里,并且可以對 .gitignore 做版本管理!
6.2 配置別名

給Git配置好別名,就可以輸入命令時偷個懶

6.3 搭建 Git 服務器
  • 搭建 Git 服務器非常簡單,通常10分鐘即可完成;
  • 要方便管理公鑰,用 Gitosis;
  • 要像 SVN 那樣變態地控制權限,用 Gitolite。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,701評論 9 163
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,695評論 4 54
  • 通過這次國慶排班再一次看清你的嘴臉,我每天忙忙碌碌、從最初的力不從心到現在的馬不停蹄,你都沒有看在眼里。去年元旦就...
    strong118閱讀 207評論 0 0
  • 豐寧壩上:京北第一草原 豐寧壩上被稱為“京北第一草原”,是距離北京最近的天然草原。分為壩下、接壩和壩上三個地貌單元...
    Shirley唐一泓閱讀 227評論 0 0
  • 新入手一本書——《好玩的書》,這本書通篇講一個字—“玩”,是的,你沒看錯,隨意翻開一頁,都是玩,從虛擬到現實,從手...
    逆書而上閱讀 229評論 0 0