Git學習筆記,

來源:互聯網
上載者:User

Git學習筆記,

Git 的教程:

一:git的基礎操作--提交,發布

    建立一個本地版本庫: git init
    添加一個檔案: git add
    提交一個檔案到本地版本庫: git commit -m 描述資訊
    查看目前文檔的狀態: git status
   在add前查看修改的內容: git diff 檔案名稱
   查看提交的日誌: git log
查看命令的曆史: git reflog

二:git的版本控制

    git的目前的版本是HEAD,回到前一個版本是: git reset --hard HEAD^
    git回到任意版本是: git reset --hard commit——id
    放棄未add的版本: git checkout -- file
   一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
  一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態
   情境1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。

   情境2:當你不但改亂了工作區某個檔案的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了情境1,第二步按情境1操作。

   情境3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。
  查看遠程庫的資訊: git remote -v

刪除: 如果在工作區刪除了一個檔案
 1. 如果你確定要刪除,那使用 git rm file 從版本庫中刪除,並且commit
 2. 如果你是誤刪,則需要從版本庫中恢複檔案: git checkout -- file


三:串連遠程倉庫:

 1. 產生密鑰:ssh-keygen -t rsa -C "18500524969@qq.com",在使用者目錄下可以找到這個檔案。
 2. 註冊github帳號,把密鑰添加到gitHub
 3. 串連遠端資料庫
 1. 未建立本地倉庫
    echo "# learngit" >> README.md
    git init
   git add README.md
   git commit -m "first commit"
   git remote add origin https://github.com/jiangerOne/learngit.git
   git push -u origin master
2. 如果已經建立本地倉庫
   git remote add origin https://github.com/jiangerOne/learngit.git
   git push -u origin master
4. 從遠程庫複製
  git clone git@github.com:jiangerOne/javaProject.git

四:分支操作:

   1. 分支的基本操作: 某個分支的操作不會對其他分支的資料進行影響,如果要同步,則需要合并分支
     查看當前的分支: git branch
     建立一個新的分支: git branch dev
    切換到dev: git checkout dev
    git checkout -b dev = git branch+git checkout dev
    合并某分支到當前分支:git merge dev
    刪除分支: git branch -d dev
  2. 分支衝突:
   當一個分支提交了改變的內容,另一個分支也提交了改變了相同行的內容時,分支合并會衝突。
    解決方案:首先解決衝突,可以使用git log --graph.
3. 分支策略
    合并分支時,加上--no-ff參數就可以用普通模式合并,合并後的曆史有分支,
    能看出來曾經做過合并,而fast forward合并就看不出來曾經做過合并。
   在實際開發中,我們應該按照幾個基本原則進行分支管理:
     1. 首先,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
     2. 那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,
       比如v10版本發布時,再把dev分支合并到master上,在master分支發布1.0版本;
    3. 你和你的小夥伴們每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合并就可以了。
   4.合并分支時,主分支不要提交,要合并
4. 建立bug分支:
  1. 當你在dev上工作時,你突然發現一個bug,但是dev的工作還沒有做完,你需要儲存dev的環境
    跑到master建立bug分支,修複bug
     1. 儲存dev的當時狀態:git stash
     2. 切換到master分支上建立bug分支:
        git checkout master
        git checkout -b bug--01
   3. 修複完bug,合并bug分支,刪除bug分支
      git merge bug--01
     git branch -d bug--01
4. 回到dev,查看stash,刪除stash,繼續開始工作
     checkout dev
     git stash list
     git stash apply恢複
     git stash pop 恢複,刪除
5. 強行刪除未合并的新分支: 開發一個新feature,最好建立一個分支;
     如果要丟棄一個沒有被合并過的分支,可以通過git branch -D <name>強行刪除。
6. 多人合作:
   但是,並不是一定要把本地分支往遠程推送,那麼,哪些分支需要推送,哪些不需要呢?

   master分支是主分支,因此要時刻與遠程同步;

   dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠程同步;

   bug分支只用於在本地修複bug,就沒必要推到遠程了,除非老闆要看看你每周到底修複了幾個bug;

   feature分支是否推到遠程,取決於你是否和你的小夥伴合作在上面開發。

7. 多人合作分支:

查看遠程庫資訊,使用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,如果有衝突,要先處理衝突。

五:標籤管理:

1. 標籤的主要作用是更好的標識版本
2. 建立一個標籤
命令git tag <name>用於建立一個標籤,預設為HEAD,也可以指定一個commit id;

git tag -a <tagname> -m "blablabla..."可以指定標籤資訊;

git tag -s <tagname> -m "blablabla..."可以用PGP簽名標籤;

命令git tag可以查看所有標籤。
git show tag 可以查看tag的資訊
3. 刪除一個標籤:
命令git push origin <tagname>可以推送一個本地標籤;

命令git push origin --tags可以推送全部未推送過的本地標籤;

命令git tag -d <tagname>可以刪除一個本地標籤;

命令git push origin :refs/tags/<tagname>可以刪除一個遠程標籤。

六:自訂git

上顏色
git config --global color.ui true
配置別名:
git config --global alias.st status


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.