GIT使用

2021/5/21 更新

add , commit(更新到本地倉庫:.git下),push(推送到遠(yuǎn)程相同名稱的分支下,例如local/Test - > origin/Test)

Merge(與其他分支合并,選用No Fast forward,能看到新建立的節(jié)點(diǎn)信息)

操作都是在本地操作

pull會(huì)拉取遠(yuǎn)程相同名稱的分支,例如local/Test - > origin/Test

更新遠(yuǎn)程分支信息 GIt->Fetch

測(cè)試demo:https://gitee.com/shawnday/Hello-Word


了解git

1.集中式VS分布式

集中式 (CVS,SVN)

集中式

必須要聯(lián)網(wǎng),版本庫集中存放在中央服務(wù)器,干活時(shí)都用自己的電腦。

分布式(Git)

分布式

無需聯(lián)網(wǎng),每個(gè)人電腦上都是一個(gè)完整的版本庫。多人協(xié)作不同電腦只需把自己的修改推送給對(duì)方。

2.安裝Git(Windows)

->全默認(rèn)
至最后

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

3.創(chuàng)建倉庫

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

3.添加文件并提交文件

初始化一個(gè)Git倉庫,使用git init命令。

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

使用命令git add <file>,注意,可反復(fù)多次使用,添加多個(gè)文件;
使用命令git commit -m <message>,完成。

$ git add readme.txt
$ git commit -m "append GPL"
[master 1094adb] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)

3.查看

$ git status //可隨時(shí)掌握工作區(qū)狀態(tài)

$ git diff //可查看修改內(nèi)容

4.時(shí)空穿梭

HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們?cè)诎姹镜臍v史之間穿梭,使用命令

$ git reset --hard commit_id。

穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個(gè)版本。

要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個(gè)版本。

4.工作區(qū)與暫存區(qū)

工作區(qū)與暫存區(qū)

5.修改管理

直接丟棄工作區(qū)修改,用 git checkout--file
已在暫存區(qū),1.用git reset HEAD <file> 2.git checkout--file
已經(jīng)commit(前提是沒有推送到遠(yuǎn)程庫),版本退回
其中,git rm <file>不僅刪除了文件,還添加到了暫存區(qū)。
rm <file> 只刪除了工作區(qū)的文件。

5.創(chuàng)建SSH key

$ ssh-keygen -t rsa -C "youremail@example.com"

關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(例如github),使用命令

$ git remote add origin git@github.com:michaelliao/learngit.git

關(guān)聯(lián)后,使用命令

$ git push -u origin master

第一次推送master分支所有內(nèi)容
此后,每次推送最近修改使用如下命令:

$ git push origin master

6.克隆倉庫

要克隆一個(gè)倉庫,首先必須知道倉庫的地址,然后使用git clone命令克隆。

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

$ git clone git@github.com:michaelliao/gitskills.git

7.分支指令

查看分支:git branch
創(chuàng)建分支:git branch <name>
切換分支:git checkout <name>
創(chuàng)建+切換分支:git checkout -b <name>
合并某分支至當(dāng)前分支:git merge <name>
刪除分支:git branch -d <name>
查看分支合并圖:git log --graph
當(dāng)Git無法自動(dòng)合并分支時(shí),就西部首先解決沖突。解決沖突后,再提交,合并完成。

8.存儲(chǔ)工作現(xiàn)場(chǎng)

手頭工作未完成時(shí),先把工作現(xiàn)場(chǎng)git stash一下,去修復(fù)bug,修復(fù)后,再git stash pop,回到工作現(xiàn)場(chǎng)。

與IDEA集成

最近工作的時(shí)候,一開始直接在master分支上進(jìn)行了修改,忘記從master分支上拉一個(gè)分支下來了。在我直接checkout 分支(a)的時(shí)候,發(fā)現(xiàn)默認(rèn)還未add或commit/push的文件改動(dòng)(包括斷點(diǎn)等的設(shè)置)直接帶到切換后的分支(a)上。在我這個(gè)分支commit和push后,我切換回master,發(fā)現(xiàn)master還原了。就很奇怪。 經(jīng)過實(shí)驗(yàn),只要commit之后,master等就會(huì)復(fù)原到?jīng)]有add的情況下。

IDEA 幫助文檔提供了切換分支時(shí)的選項(xiàng)說明;

image.png
  1. 本地分支切換的時(shí)候(例如A切到B),會(huì)彈出來Restore workspace on branch switching 對(duì)話框,如果選擇是的話,在切換分支的時(shí)候,你在當(dāng)前分支(A)所做的一些還未add或commit/push的文件改動(dòng)(包括斷點(diǎn)等的設(shè)置)會(huì)帶到切換后的分支(B)上;

  2. 如果本地工作空間沒有uncommitted changes, 分支會(huì)順利切換

  3. 如果本地工作空間(分支A)有些文件會(huì)被分支B改動(dòng),IDEA會(huì)彈出對(duì)話框,讓你選擇Force Checkout 或 Smart Checkout;

如果選擇Force Checkout, 本地工作空間(分支A)的一些未提交的修改會(huì)被覆蓋(被分支B覆蓋),會(huì)有很大可能丟代碼!!!
如果選擇Smart Checkout,IDEA會(huì)先執(zhí)行stash命令,貯存這些未提交的修改,然后checkout 到分支B,在切換到分支B后,unstash 這些修改,所以A分支本地的這些修改會(huì)帶到B分支上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • (預(yù)警:因?yàn)樵敿?xì),所以行文有些長,新手邊看邊操作效果出乎你的預(yù)料) 一:Git是什么? Git是目前世界上最先進(jìn)的...
    axiaochao閱讀 2,007評(píng)論 1 8
  • 聲明:這篇文章來源于廖雪峰老師的官方網(wǎng)站,我僅僅是作為學(xué)習(xí)之用 Git簡(jiǎn)介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 4,138評(píng)論 3 27
  • 原文地址主要用到的命令: git config user.name 設(shè)置用戶名 git config user....
    AFinalStone閱讀 567評(píng)論 0 2
  • 轉(zhuǎn)載自:http://www.open-open.com/lib/view/open1414396787325.h...
    Bbooo閱讀 556評(píng)論 0 3
  • 一:Git是什么? Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。 二:SVN與Git的最主要的區(qū)別? SVN...
    JSXL閱讀 1,907評(píng)論 0 2

友情鏈接更多精彩內(nèi)容