Git常用使用場(chǎng)景和命令

### 簡(jiǎn)介:

Git 是一個(gè)版本控制工具,除了git外還有其他版本控制工具,例如svn,主要是用來(lái)解決不同系統(tǒng)不同開(kāi)發(fā)者分工協(xié)作的問(wèn)題,git是一個(gè)分布式版本控制系統(tǒng),每次克隆都將倉(cāng)庫(kù)代碼完整鏡像下來(lái),也是對(duì)代碼倉(cāng)庫(kù)的一次備份,正因如此,git可以在本地進(jìn)行工作任務(wù)處理。相比其它版本控制工具,git以每次提交的文件快照作為處理,而不是以每一次文件的差異性作為信息保存。?

官網(wǎng):<https://git-scm.com/>

<!-- more -->?

### 常用命令以及場(chǎng)景

1. 環(huán)境設(shè)置

通過(guò)下面命令設(shè)置git confit 命令設(shè)置提交的用戶信息,通過(guò) git config --list 命令可列出配置信息

```

git config --global user.name "John Doe"

git config --global user.email johndoe@example.com

```

2. 項(xiàng)目建立

有兩種方式可以開(kāi)始項(xiàng)目,第一種是本地新建項(xiàng)目推送到遠(yuǎn)程代碼倉(cāng)庫(kù),第二種是通過(guò)遠(yuǎn)程倉(cāng)庫(kù)克隆到本地進(jìn)行工作

執(zhí)行下面命令進(jìn)行代碼倉(cāng)庫(kù)初始化,并會(huì)生成.git隱藏文件,該文件包含了git相關(guān)信息

```

git init (本地項(xiàng)目目錄下初始化)

git clone *** (遠(yuǎn)程倉(cāng)庫(kù)克隆項(xiàng)目到本地,***代表代碼倉(cāng)庫(kù)地址)

```

3. 提交工作

修改完代碼后,先將文件添加到暫存區(qū),然后檢查文件狀態(tài),最后整理好提交信息提交代碼

```

git add . (添加所有文件到暫存區(qū))

git status -s(文件狀態(tài)簡(jiǎn)覽)

git diff (查看所有文件修改)

git reset HEAD *** (撤銷(xiāo)已暫存文件修改,***代表文件路徑)

git checkout *** (撤銷(xiāo)未暫存文件修改,***代表文件路徑)

git comit -m "commit info"(提交代碼)

git commit -amend -m "commit info"(修改上一次提交信息)

```

4. 分支管理

當(dāng)項(xiàng)目有了不同特性需求后,需要多個(gè)版本時(shí),這時(shí)用到了git分支相關(guān)功能

```

git ls-remote (查看項(xiàng)目遠(yuǎn)程倉(cāng)庫(kù)分支)

git branch (查看本地分支)

git branch *** (創(chuàng)建分支,***代表分支名)

git branch -d *** (刪除本地分支,***代表分支名)

git branch -D *** (強(qiáng)制刪除本地分支,***代表分支名)

git push origin --delete branchname (刪除遠(yuǎn)程分支)

git push origin *** (推送分支到遠(yuǎn)程代碼倉(cāng)庫(kù),***代表分支名)

git checkout -b *** origin/*** (拉取遠(yuǎn)程分支代碼到本地分支,***代表分支名)

```

5. 推拉遠(yuǎn)程代碼

當(dāng)項(xiàng)目多人進(jìn)行工作時(shí),需要拉取最新代碼,以及推送自己代碼到遠(yuǎn)程代碼倉(cāng)庫(kù),remote代表遠(yuǎn)程倉(cāng)庫(kù)根目錄,branch代表分支名

```

git pull (remote)(branch)

git push (remote)(branch)

```

6. 回滾代碼

當(dāng)項(xiàng)目代碼出現(xiàn)問(wèn)題時(shí),需要返回以前版本的代碼時(shí),可通過(guò)下面命令進(jìn)行代碼回滾

```

git reset --hard *** (*** 代表回滾地方的代碼提交id)

```

7. 標(biāo)簽管理

當(dāng)代碼需要標(biāo)記,或者版本需要標(biāo)記時(shí),可在提交處打上標(biāo)簽進(jìn)行代碼管理

```

git tag (列出標(biāo)簽)

git tag *** (新建輕量標(biāo)簽,***代表標(biāo)簽名)

git tag -a *** -m "tag info" (新建附注標(biāo)簽)

git tag -a tagname commitId (補(bǔ)簽,tagname表示標(biāo)簽名,commitId表示補(bǔ)簽提交的id)

git tag show ***(查看標(biāo)簽信息,***代表標(biāo)簽名)

git push origin *** (推送標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù)共,***代表標(biāo)簽名享)

git push origin -tags (推送所有標(biāo)簽)

git checkout -b branchname tagname (檢出標(biāo)簽到新建分支,branchname表示分支名,tagname表示標(biāo)簽名)

```

8. 分支合并

開(kāi)發(fā)過(guò)程中,會(huì)因?yàn)轫?xiàng)目特性,需求,以及bug等原因需要開(kāi)多個(gè)分支進(jìn)行編碼處理,當(dāng)處理完之后則需要合并到穩(wěn)定分支或線上分支上,這里有兩種方式,一是合并分支,二是變基分支。

```

git merge branchname (合并分支會(huì)將兩個(gè)分支的末端提交和共同的祖先提交進(jìn)行三方合并形成新的分支)

```

變基分支則需要多個(gè)步驟,假設(shè)主分支為master, 被合并的分支為 branch1,先切換到branch1分支進(jìn)行變基,然后再切換到主分支進(jìn)行快進(jìn)合并,變基分支和合并分支不同的特點(diǎn)在于它是相當(dāng)于在主分支上重新建立分支上的修改提交,在log上顯的更加清晰一些,要注意的是,避免在協(xié)作過(guò)程中將已經(jīng)推送的提交進(jìn)行變基操作。

```

git checkout branch1

git rebase master

git checkout master

git merge branch1

```

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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