1. 程式人生 > >git主要操作命令

git主要操作命令

branch rap 你在 註釋 永遠 推送 out 本地推送 換工作

1、創建版本庫

(1)初始化一個 Git倉庫,使用git init命令 (在相應的本地庫目錄下執行,將該目錄初始化為一個Git庫);

(2)添加文件到Git倉庫,分兩步:

  第一步,使用命令 git add <file> ,註意可反復多次使用添加個文件;
  第二步,使用命令 git commit -m "修改註釋信息",將添加的文件提交到本地倉庫 。

2. 時光穿梭
(1)要隨時掌握工作區的狀態,git status 命令;
(2)如果 git status告訴你有文件被修改過,用 git diff <file>可以查看修改內容。

2.1 版本回退
(1)HEAD指向的版本就是當前, 因此Git允許我們在版本的歷史之間穿梭,使用命令git reset -- hard (commit_id是要撤銷的版本 commit id);

(2)穿梭前,用git log 可以查看提交歷史,便確定要回退到哪個版本;
(3)要重返未來,用git reflog 查看命令歷史,以便確定要回到未來的哪個版本。

2.2工作區和暫存工作區
(1)工作區( Working Directory):就是你在電腦裏能看到的目錄;
(2)版本庫( Repository):工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫;
(3)暫存區 (Stage):是Repository裏一個叫Stage 的地方;
(4)前面講了我們把文件往Git版本庫裏添加的時候,是分兩步執行:
  ? 第一步 用 git add把文件添加進去,實際上是把文件修改添加到暫存區;

  ? 第二步 用 git commit提交更改,實際上是把暫存區的所有內容提交到當前分支(本 地);
(5)可以簡單理解為,需要提交的文件修改通通放到暫存區然後一次性提交暫存區的所有修改。

2.3管理修改
(1)每次修改之後,都必須執行git add 和 git commit命令 ,才能夠把修改提交到本地倉庫 ;
(2)每次修改,如果不add到暫存區,那就不會加入commit中

2.4撤銷 修改
(1)場景 1:當你改亂了工作區某個文件的內容,想直接丟棄修改時,用命令git checkout -- file;
(2)場景 2:當你不但改亂了工作區某個文件的內容,還添加到暫存時 (git add 之後 ), 想丟棄修改,分兩步:第一步用命令 git reset HEAD <file>,就回到了場景 1,第二步按場景 1操作;

(3)場景 3:已經提交了不合適的修改到版本庫時 (git commit之後 ),想要撤銷本次提交,參考版本回退一節,參考版本回退一節,不過前提是沒有推送到遠程庫 。

2.5刪除文件
(1)命令git rm用於從本地庫中刪除一個文件 ,之後git commit;
(2)如果一個文件已經被提交到版本庫 (本地 ),那麽你永遠不用擔心誤刪但是要小心,你只能恢復文件到最新版本 (git checkout -- <file>),你會丟失最近一次提交後修改的內容;
(3)git checkout -- <file>只是用本地庫裏的文件替換工作區的文件,因此無論工作區的文件是被誤改或刪,均可從本地庫中一鍵還原。

3、遠程倉庫

3.1 添加遠程庫

(1)要關聯一個遠程庫 :git remote add <remote url>.git
(2)關聯後,使用命令 git push -u origin master 第一次推送master分支的所有內容;
(3)此後,每次本地提交只要有必就可以使用命令git push origin master 推送最新修改。

3. 2從遠程庫克隆

(1)要克隆一個倉庫,首先必須知道的地址然後使用git clone 命令克隆:git clone <remote> <url>

(2)Git支持多種協議,包括 https,但通過ssh支持的原生協議速度最快。 協議速度最快。

3. 3重命名遠程庫

(1)重命名遠程庫:git remote rename <old name> <new name>

4、支持分支管理

4.1 創建與合並分支

(1)首先,代碼庫應該有 一個、且僅一個主分支。所有提供給用戶使用的正式版本,都在這個主分支上發布; Git主分支的名字,默認叫做Master 。它是自動建立的,版本庫初始化以後,默認就是在主分支進行開發;

(2)日常開發應該在另一條分支上完成。我們把開發用的分支,叫做Develop ;這個分支可以用來生成代碼的最新隔夜版本( nightly);如果想正式對外發布,就在Master 分支上, 對Develop分支進行 "合並 "(merge );
(3)git上的分支常用操作:
  ? 查看分支:git branch
  ? 創建分支: git branch <name>
  ? 切換分支:git checkout < branch name>
  ? 創建+切換分支git checkout -b < branch name>
  ? 合並指定分支到當前:git merge -- no -ff <branch name>

? 刪除本地分支:切換到其他分支 然後git branch -d <branch name>

? 刪除遠程分支:切換到其他分支 然後git branch -a; git git push origin --delete <branch name>

4.2解決沖突
(1)當Git無法自動合並分支時,就必須首先解決沖突。首先解決沖突後,再提交,合並完成;
(2)用 git log -- graph命令可以看到分支合並圖。

4.3分支管理策略
(1)Git分支十份強大,在團隊開發中應該充份應用。
(2)合並分支時,加上 -- no -ff 參數就可以用普通模式合並,合並後的歷史有分支能看出來曾經做過合並,而fast forward合並就看不出來曾經做過;
(3)使-- no -f合並分支時會提交一個新的commit,這時可以使用 -m參數添加描述: git merge -- no -ff -m “A merge. ” <name><name> <name> 。

4.4Bug分支
(1)修復 bug 時,我們會通過創建新的bug分支進行修復,然後合並最後刪除(需要在哪個分支上修復 bug ,就在哪個分支上創建bugfix分支,修復完畢後將bugfix分支合並 );
(2)當手頭工作沒有完成時,先把現場git stash一下,然後去修復 bug,修復後再git stash pop ,回到工作現場;

4.5Feature分支
(1)開發一個新feature,最好新建一個分支;
(2)如果要丟棄一個沒有被合並過的分支,可以通過git branch -D <branch name>強行刪除。

4.6多人協作
(1)總結:
  ? 查看遠程庫信息,使用 git remote -v;
  ? 本地新建的分支如果不推送到遠程,對其他人就是可見;
  ? 從本地推送分支,使用git push <remote name> <branch name>,如果推送失敗,先用 git pull <remote name> <branch name>抓取遠程的新提交;
  ? 在本地創建和遠程分支對應的分支,使用git checkout -b branch -name origin/branch name,本地和遠程分支的名稱最好一致;
未完待續。。。。

git主要操作命令