Java 版本控制工具-Git 學習總結

1)Git有關的學習書籍和博客推薦

首先推薦的當然是ProGit這本書:https://git-scm.com/book/zh/v2
Git官網也有很多資料:https://git-scm.com/https://git-scm.com/docs
有關的博客:http://www.yangzhiping.com/tech/github.html
Git命令詳解:http://blog.csdn.net/prike/article/details/50040723
Git遠程操作講解:http://www.ruanyifeng.com/blog/2014/06/git_remote.html
研發團隊 GIT 開發流程新人學習指南:http://blog.jobbole.com/110052/?utm_source=blog.jobbole.com&utm_medium=relatedPosts

2)如何佈置項目到Github

step01: 一般我們可以新建一個倉庫,給倉庫命名,並做相應的初始化處理。
step02:打開剛創建的倉庫,選擇本倉庫的設置界面,將分支選擇到master-branch這個選項,這樣可以簡單地理解爲還沒有分支合併。
step03:在本地安裝Git環境,這裏我選擇的是命令行模式,圖形化界面其實有時候沒有命令行模式更加便捷。Git官網
step04:在電腦中存放項目的目錄下點擊鼠標右鍵,選擇git bash here,進入Git bash模式。
step05:使用git clone 命令將項目從遠端Github服務器上拷貝到本地。格式爲:https://github.com/username/program.git或者拷貝本地的項目到當前目錄
step06:可以在本地對剛項目做一些修改,比如增加一個文件,添加一些自己寫的代碼。
step07: git add . 將本地的修改添加到上傳列表 ,也可以在add後面指定特定的文件名,只添加部分文件到遠端暫存區。
step08: git commit -m ”modify”將文件提交到暫存區。
step09: git pull 將遠端的項目快照下載到本地。
step10: git push講修改後的項目上傳到遠端服務器,這裏是github。

3)git與其他集中式版本控制工具的區別

版本控制工具的發展經歷了三個過程:
1. 本地的一些vcs(backup,rcs)
2. 集中式版本控制工具cvcs(cvs, svn,perforce)
3. 分佈式版本控制工具(git,mercurial,bazaar,darcs)。
常用的版本控制工具有:git, svn(subversion), perforce, cvs,bazaar等。
Git與SVN之間的區別:http://blog.jobbole.com/31444/

4)git中項目文件的三種狀態

  1. committed(已提交):表示數據已安全保持到服務器中;
  2. modified(已修改):修改了文件,還沒有保存到服務器中;
  3. staged(已暫存):對已修改的文件做了標記,使得在下次提交 時也提交它的快照。
    本地的項目路徑下,是工作區。暫存但還沒有提交到遠端服務器的區域稱爲staging area。遠端服務器的項目稱爲git directory。

5)Github代碼貢獻使用流程

  1. Fork別人的項目
  2. 下載項目到本地進行修改貢獻
  3. 從master分支中創建一個新的分支
  4. 將這個分支推送到github上
  5. 創建一個合併請求
  6. 討論,根據實際情況繼續修改
  7. 項目的擁有者合併或關閉貢獻者的合併請求

6)Git 常用的command

  • 查看當前git 的版本配置情況
    git config –list;也可以查看某一項git配置 git config key

  • 查看當前git 的版本號
    git version

  • 查看文件狀態
    git status -v

  • 設定特定的文本編輯器
    git config –global core.editor vim(emacs)

  • 使用git獲取幫助
    git help verb

  • 顯示當前目錄中文件的狀態
    git status -s
    ?? file1:新添加未跟蹤的文件
    A file2:新添加到暫存區的文件
    M file3:M在右邊表示該文件被修改了但還沒有放入暫存區,M在左邊表示該文件被修改了,並放入了暫存區。
    MM file4:在工作區修改並提交到暫存區後,又在工作區做了修改,所以在暫存區和工作區都有該文件被修改過的記錄。

  • 設定當前項目或目錄中不會更新到遠端的文件
    創建隱藏文件.gitignore,在該文件中可以依據正則表達式定義需要過濾git管理的文件,比如*.log會過濾到所有log文件。這樣,即使使用了git add 命令將其加入到暫存區,log文件也不會更新到遠端倉庫。
    .gitignore格式規範

    1. 空行或以#開頭行相當於註釋,會被git忽略
    2. 可使用標準glob模式匹配
    3. 以/開頭表示防止遞歸,防止忽略下一層目錄的相關文件
    4. 以/結尾指定目錄
    5. 要反向忽略指定模式以外的文件或者目錄,可以在模式前加!取反。
  • 比較差異
    git diff 比較的是當前目錄中文件和暫存區域snapshort之間的差異,也就是修改之後還沒有暫存起來的變化內容。
    git diff –cached 或 git diff –staged 查看已暫存的將要添加到下次提交裏的內容。

  • 自動提交
    git commit -a 自動把所有已跟蹤過的文件暫存起來一併提交,從而跳過git add步驟。

  • 修改文件名
    git mv file1 file2

  • 從暫存區移除,但在工作區不刪除該文件
    git rm –cached filename

  • 從暫存區和工作區同時刪除文件
    git rm file
    git rm -f file 強制刪除modify之後在暫存區的文件。

  • 查看提交的歷史記錄 git log
    常用option:

    1. -p : 顯示每次提交的內容差異
    2. -num 僅顯示最近num次提交的內容
    3. –stat 總結有多少文件被修改以及被修改過的文件具體哪些行被移除(-)或添加了哪些行(+)
    4. –pretty (=oneline,short, full fuller) format 定製格式化輸出
    5. –graph 展示分支,合併歷史。
    6. –since=2.weeks 列出最近兩週內的提交
    7. –author 指定作者的提交歷史
    8. –grep 搜索提交說明中的關鍵字
    9. –all -match 同時滿足所有限制條件
    10. –until –before 總結指定時間。
  • git commit –amend 提交後如果發現忘記了暫存的某些需要的修改,可以使用命令
    1.git commit -m ‘initial commit’
    2.git add forgotten file
    3.git commit –amend

  • 取消暫存文件
    git reset HEAD filename

  • 取消對文件的修改(該命令不可逆,慎重!)
    git checkout – filename

  • 添加遠程倉庫
    git remote add shortname https://github.com/username/program_name

  • 對遠程倉庫重命名
    git remote rename old_name new_name

  • 刪除遠程倉庫
    git remote rm short_name

  • tag
    git的tag分兩種,lightweight(輕量級標籤,臨時使用) 和annotated附註標籤(推薦使用)
    git show 可以查看tag信息及相應的提交信息
    git tag -a v1.0 -m ‘my first version’
    -m 是必須的,用來存儲在tag中的信息
    -a 是用來添加附註標籤。
    lightweight標籤不需要添加-m -a 的option

  • 給已經提交過的項目追加tag
    git log –pretty=oneline 查看校驗和
    git tag -a version 檢驗和部分值

  • 共享標籤
    git push origin version

  • 一次性將所有標籤上傳到remote servers
    git push origin –tags

  • 創建分支命令
    git branch branch_name1 branch_name2

  • 顯示本項目的所有分支
    git branch

  • 查看各個分支當前所指的對象
    git log –oneline –decorate

  • 分支切換
    git checkout branch_name

  • 創建分支並切換到該分支
    git checkout -b branch_name
    相當於1. git branch branch_name+git checkout branch_name

  • 刪除分支
    git branch -d branch_name

  • 合併分支1到分支2(master)
    git checkout master+git merge branch_1

  • 強制刪除分支
    git branch -D branch_name

  • 查看每個分支的最後一次提交
    git branch -v

發佈了37 篇原創文章 · 獲贊 10 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章