GIt備忘錄


TOC

[========]

常用命令

    git init     //倉庫初始化
    git clone git@github.com/xxxx.git    //克隆遠程倉庫到本地
    git remote add origin git@github.com/xxxx.git    // 連接到遠程倉庫
    git status // 查看版本庫的狀態
    git add .|[file you want add like README.md] // 添加修改的文件進入版本庫
    git commit -m "the content of your modify" // 提交版本庫
    git push -u origin master // 上傳到遠程版本庫</pre>

git全局配置和單個倉庫配置郵箱和用戶名

全局配置

git config --global user.name "github's Name"
git config --global user.email "github@xx.com"
git config --list

單個倉庫配置

git config  user.name "github's Name"
git config  user.email "github@xx.com"
git config --list

git config --list查看當前配置, 在當前項目下面查看的配置是全局配置+當前項目的配置, 使用的時候會優先使用當前項目的配置


本地ssh-key的創建

ssh-keygen -t -rsa -C "dalinyy@163.com"

然后在C:\Users\Administrator.ssh(windows)目錄中可以看到生成的ssh-key。


git從遠程庫同步到本地倉庫

1. 遠程倉庫發生改變,本地倉庫沒有改變

1.查看遠程倉庫 : git remote -v
2.把遠程倉庫更新到本地 : git fetch origin master
3.比較遠程和本地版本的差異 : git log master.. origin/master
4.合並遠程倉庫 : git merge origin/master

2. 遠程倉庫沒有改變,本地倉庫發生改變(將本地更新到遠程)

  1. 常看更改 : git status
    1. git add .
    2. git commit -m "content"
    3. git push -u origin master

版本回退 : git reset

1. 基本而用法

'''
1. git log //查看歷史版本
2. git log --graph //一圖形界面方式查看歷史
3. git reset HEAD~n //回退到前 n 版本, n = 前幾個版本
4. git reset id //回退到任意一個id版本
'''

2. --hard參數

添加--hard參數: 表示回退到某個版本並且丟棄調工作區進行的修改

git reset --hard HEAD~1 或者 git reset --hard id

不添加--hard參數:不加該參數表示回退到某個版本但保留工作區的修改。

git reset HEAD~1 或者 git reset id

推送和拉取

1. git push: 推送本地分支到遠程

當修改完成,本地的改動都已經提交到本地庫,則可以將本地分支推送到遠程代碼庫了。

 git push origin master origin  //表示遠程代碼庫的一個別名(也可以修改為其他名字,可
 git remote                     //master 表示需要推送的分支名稱。

如果,push 的過程中提示當前分支進度落后於遠程的分支,則需要通過 git pull 命令來拉取遠程最新狀態和本地分支進行合並,完成之后再 push 到遠程就可以了。

2. git pull: 拉取遠程分支到本地並合並

一般是本地分支的進度落后於遠程分支時,需要使用該命令。

git pull origin master origin   //表示遠程代碼庫的一個別名(也可以修改為其他名字,可
git remote                      //master  表示需要拉取合並的分支名稱。

常用 git pull --rebase origin master 用 rebase 的方式進行,不會產生 merge 保持分支干凈、整潔

分支管理

1. git branch: 分支操作

    git branch                //顯示本地所有分支以及當前所在哪個分支
    git branch branchName     //用於新建名為 branchName 的新分支
    git branch -d branchName  //用於刪除名為 branchName 的分支
    git branch -D branchName  //用於強制刪除分支

2. git checkout: 分支間切換

該命令除了進行分支間切換功能外,還可以用來丟棄工作區中的修改內容,這里就不作介紹了,僅介紹分之間的切換功能

    git checkout branchName     //用於從當前分支切換到名為 branchName 的分支上。
    git checkout -b branchName  //用於新建名為 branchName 的分支並切換到該分支上。

注意與 git branch 新建分支的區別,此處除了新建分支外還進行了切換操作

3. git merge: 合並分支

該命令用於合並兩個分支。 命令:git merge branchName 用於將名為 branchName 的分支合並到當前分支。 有兩種合並方式:

  1. fast-forward 方式合並: 命令:git merge dev

  1. 非fast-forward 方式合並: 命令:git merge dev

注意兩種方式的區別:fast-forward 方式僅僅是移動了 HEAD 指針,而非 fast-forward 方式則是新建了一個節點

其他命令

1. git revert: 撤銷某次提交

該命令用於撤銷歷史上的某次提交,注意該撤銷操會作為一個新節點存在於分支上

2. git tag: 標簽的操作

用於給某次提交打個標簽,例如截止到某次提交后完成了某個重大版本的開發,則可以在該次提交打上一個版本的 tag
git tag V1.0   標注V1.0版本

3. git show: 顯示信息

可用於顯示某次提交或者某個 tag 相關的信息。 命令: git show commit_id 顯示某次提交的詳細信息
命令: git show tag_name 顯示某個 tag 的詳細信息

4. git blame: 查看文件每行的提交歷史 (追責)

git blame file_name

可用於查看某個文件中的每一行是那次提交產生的,是誰提交的,什么時候提交的,提交的版本號是多少等等詳細信息,在實際工作中方便對出問題的代碼進行追責,找到產生 BUG 的責任人。

GIT團隊協作

在團隊協作過程中一般會有多個分支,比如有默認的 master 分支,有用於開發的 dev 分支,還有用於測試的 test 分支,用於對外發布的 release 分支,以及每個開發人員開發不同功能時用到的 feature_xx 分支等等。

1. 分支設置

我們常用的分支有3個(master 分支、dev 分支、test 分支)以及若干個 feature_xx 分支。

  1. master 分支:是主分支,是最終上線代碼的分支,該分支被設置被保護分支(鎖住),普通開發人員沒有權限操作,只有團隊 leader 有合並的權限;
  2. dev 分支:是用於開發的分支,該分支被設置為默認 clone 的分支,也用於合並到 master 之前進行測試的分支,普通開發人員從遠程 clone 到本地的默認分支,可以進行合並等操作;
  3. test 分支:是用於測試的分支,測試人員可以將自己開發分支中的修改合並到 test 分支在測試環境進行測試,一般該分支不合並到任何分支;
  4. feature_xx 分支:是用戶開發自己模塊功能的特征分支,可以叫 feature_login, feature_ui, feature_payment 等與開發的功能相關的名稱,該分支上的功能開發完、測試無誤后可合並到 dev 分支上。

2. 普通開發人員的操作

普通開發人員,一般按照如下幾個步驟來進行開發、測試工作就可以了:

  1. 將遠程 dev 分支 clone 到本地,例如:git clone git@github.com:xxx/xxx.git
  2. 從 dev 分支拉出(新建)自己的 feature 分支用於開發,例如:git checkout -b feature_login
  3. 在自己的 feature 分支上進行開發工作;
  4. 開發完了用 add、commit 等操作提交到當前分支;
  5. 如果需要在測試環境進行測試,則將遠程 test 分支拉到本地,例如:git branch test origin/test;
  6. 將自己的 feature 分支合並到 test 分支,並將 test 分支 push 到遠程,例如:git rebase test, git checkout test, git merge feature_login, git push origin test(注意:我們推薦用 rebase 來合並,以保證分支的整潔、美觀)
  7. 通過公司的發布平台將遠程 test 分支發布到測試環境進行測試;
  8. 如果測試沒問題或者開始就不需要測試,這可以直接將當前 feature 分支合並到 dev 分支,並 push 到遠程庫,例如:git rebase dev, git checkout dev, git merge feature_login, git push origin dev(注意:我們推薦用 rebase 來合並,以保證分支的整潔、美觀)
  9. 這時表示該功能已經開發完成了,代碼的 review 以及發布,需要團隊 leader 在合並到 master 操作時進行;這時可以刪除了自己的 feature 分支,例如:git branch -d feature_login
  10. 如果在 push 到遠程的時候提示需要先 pull 時,我們推薦使用 rebase 的方式:git pull --rebase 以保持分支的整潔、美觀。

3. 團隊 leader 的操作

因為只有 leader 有操作 master 分支的權限,所以需要完成 dev 分支到 master 分支的合並,以及后續打 tag 和正式上線發布的工作:

  1. 先切換到 dev 分支,並拉取最新的狀態,例如:git checkout dev, git pull --rebase origin dev
  2. 進行代碼 review 等過程后,合並到 master 分支,例如:git rebase master, git checkout master, git merge dev;(注意:我們推薦用 rebase 來合並,以保證分支的整潔、美觀)
  3. 為本次完成的版本打上標簽,例如:git tag v1.0 -m "release version 1.0"
  4. 將本地合並后的 master 分支以及標簽 push 到遠程庫,例如:git push orgin master --tags


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM