git 的基本使用

一、獲取 Git 倉(cāng)庫(kù)

有兩種方式可以獲取 git 倉(cāng)庫(kù),一種是在現(xiàn)有的項(xiàng)目或者目錄下將所有文件導(dǎo)入到 git 中,另一種是從服務(wù)器上克隆一個(gè)現(xiàn)有的 git 倉(cāng)庫(kù)。

1、第一種方式

git init

下面是實(shí)際的操作:

git init 建立本地倉(cāng)庫(kù)

但是這樣只是建立了一個(gè)本地的倉(cāng)庫(kù),現(xiàn)在要將建立一個(gè)遠(yuǎn)程的倉(cāng)庫(kù),并將本地和遠(yuǎn)程的倉(cāng)庫(kù)連接起來(lái)。

新建遠(yuǎn)程倉(cāng)庫(kù)
git remote add origin url
git remote -v
git push -u origin master
為本地倉(cāng)庫(kù)添加遠(yuǎn)程

此時(shí)刷新 github 頁(yè)面可以看到已將本地和遠(yuǎn)程倉(cāng)庫(kù)連接起來(lái),還可以看到有一次 commit 以及 push 到遠(yuǎn)程的文件:

第一種方式適用于你想要用 git 倉(cāng)庫(kù)來(lái)管理你本地的項(xiàng)目或者文件。

2、第二種方式

git clone url

復(fù)制已有的 git 倉(cāng)庫(kù)的鏈接,使用 git clone url 命令將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地。

第二種方式適用于你想要獲取一個(gè)已經(jīng)存在的 git 倉(cāng)庫(kù)的拷貝。

二、上傳本地修改

git add file
添加所有修改可以用 git add .
git commit -m "commit description"
git push
完整的寫法:git push remoteName branchName
git push origin master
可以使用 git status 來(lái)查看狀態(tài)

修改之前 file.txt 文件的內(nèi)容:

修改前 file 文件

進(jìn)行的操作:

上傳修改后的文件的操作

修改之后 file.txt 文件的內(nèi)容:

三、查看 commit 記錄

git log

github 中顯示的 commit 記錄:

使用 git log 命令:

commit 后面跟著的是 commit id,可以用于版本回退。

四、版本回退

回退到上 n 個(gè)版本:git reset --hard HEAD~n
回退到某個(gè)指定的版本:git reset --hard commit id

五、解決沖突

git merge

一般項(xiàng)目會(huì)由多人合作,也就會(huì)出現(xiàn)沖突的情況。一般沖突分為兩種,一種是 A 對(duì) a 文件修改,B 對(duì) b 文件修改,另一種是 A 和 B 都對(duì) file 文件進(jìn)行修改。

1、A 對(duì) a 文件修改,B 對(duì) b 文件修改

遠(yuǎn)程模擬 A 對(duì) a 文件進(jìn)行修改,A 新增文件 a 且輸入一些內(nèi)容,實(shí)際情況下最好不要在 github 上直接進(jìn)行操作:

A 對(duì) a 文件進(jìn)行修改

本地新建文件 b 并輸入內(nèi)容提交:
在進(jìn)行完 add 和 commit 操作之后,如果直接進(jìn)行 push 操作是會(huì)報(bào)錯(cuò),提示你需要先 git pull,將遠(yuǎn)程文件先拉取下來(lái),然后才能進(jìn)行 push 操作。

B 對(duì) b 文件進(jìn)行修改

git pull 之后會(huì)自動(dòng)的進(jìn)行 merge:

2、A 和 B 都對(duì) file 文件進(jìn)行修改

還是在 github 上模擬 A 對(duì)文件 file 的修改:


A 對(duì) file 文件修改

在本地 B 對(duì) file 文件進(jìn)行修改:
同樣的在 push 操作之前要先進(jìn)行 pull 操作,但是這個(gè)時(shí)候不會(huì)自動(dòng)的解決沖突,而是要手動(dòng)的解決沖突,解決沖突完之后才能 push 到遠(yuǎn)程。

B 對(duì) file 文件進(jìn)行修改
沖突的 file 文件
解決沖突完后的 file 文件

解決沖突完之后重新 commit,然后 push 到遠(yuǎn)程:


六、分支的使用

1、建立分支

新建分支:git branch branchName
切換分支:git checkout branchName
新建分支并切換到該分支:git checkout -b branchName
查看當(dāng)前所有分支及當(dāng)前所在的分支:git branch

2、暫存

保存當(dāng)前進(jìn)度:git stash
顯示保存進(jìn)度的列表:git stash list
恢復(fù)最新的進(jìn)度到工作區(qū):git stash pop

建立了分支之后,我們?cè)谝粋€(gè)分支上進(jìn)行工作,工作到一半的時(shí)候有人反饋了一個(gè)問題需要你立刻解決,但是新的工作進(jìn)行到一半也不方便 commit,此時(shí)可以使用 git stash 命令將當(dāng)前分支的工作暫時(shí)保存起來(lái),等到解決完其他的問題之后再切回來(lái)繼續(xù)進(jìn)行工作。

  • 首先我們切換到 first 分支進(jìn)行一些操作:

我們新建一個(gè) stash.txt 的文件,并寫入了一些內(nèi)容,但是此時(shí) master 分支上需要我們?nèi)プ鲆恍┕ぷ鳎覀兛梢詫?first 分支當(dāng)前的工作暫存起來(lái),使用 git status 命令可以看到,工作樹是干凈的。

  • 然后我們切換到 master 分支上進(jìn)行工作:
  • 最后我們切回 first 分支,恢復(fù)最新的進(jìn)度到工作區(qū),繼續(xù)進(jìn)行原來(lái)的工作:

3、合并分支

git merge branchName
git rebase branchName
  • git merge
    切回到 master 分支上,將 first 分支合并到 master 上:


    git merge 合并分支

使用 git log 查看 commit 記錄,會(huì)發(fā)現(xiàn)有一條很不規(guī)范的 commit 記錄:

git merge 合并分支 commit 的記錄

但是同時(shí) git merge 保存了詳細(xì)的合并信息,當(dāng)需要保留詳細(xì)的合并信息的時(shí)候建議使用 git merge。

  • git rebase
    然后我們分別再在兩個(gè)分支上進(jìn)行修改,使用 git rebase 進(jìn)行合并,查看 commit 的記錄:


    git rebase 合并分支

可以看到,使用 git rebase 合并分支不會(huì)出現(xiàn)不規(guī)范的 commit 記錄,但是不會(huì)保留詳細(xì)的 merge 信息,當(dāng)很多的提交信息沒有必要時(shí),可以嘗試 git rebase。

4、刪除分支

git branch -d branchName

分支合并到 master 分支上之后,它的作用也就達(dá)到了,我們可以將它刪掉,不然會(huì)殘留許多無(wú)用的分支。


刪除分支

七、不需要追蹤某些文件

1、永久不追蹤

修改 .gitignore 文件,在 git 中如果想忽略掉某個(gè)文件,不讓這個(gè)文件提交到版本庫(kù)中,可以使用修改 .gitignore 文件的方法。

2、add 之后,取消追蹤某個(gè)文件 / 文件夾

git rm --cached filename
git rm -r --cached foldername
最后編輯于
?著作權(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)容

  • 一、前言: 關(guān)于git的學(xué)習(xí)最早是來(lái)源于廖雪峰帥哥的官網(wǎng),通俗易懂,場(chǎng)景眾多。不過最近在掘金上看了一個(gè)帥哥的文章,...
    前端小學(xué)生_f675閱讀 356評(píng)論 0 0
  • 1.從遠(yuǎn)程倉(cāng)庫(kù)拉代碼 git fetch origin(此處可用tab進(jìn)行聯(lián)想輸入or直接出現(xiàn)origin) 之后...
    1a4d4ac5a222閱讀 403評(píng)論 0 0
  • 經(jīng)過一下午的git學(xué)習(xí),感覺受益匪淺,不扯淡了,直接進(jìn)入主題吧,以下是小二對(duì)git的一些見解。 首先取得項(xiàng)目的gi...
    走在路上的小二閱讀 478評(píng)論 0 3
  • 一. 掌握 - git 概述 1. git 簡(jiǎn)介? 什么是git? > git是一款開源的分布式版本控制工具 > ...
    Louis_hey閱讀 552評(píng)論 1 3
  • git 使用筆記 git原理: 文件(blob)對(duì)象,樹(tree)對(duì)象,提交(commit)對(duì)象 tree對(duì)象 ...
    神刀閱讀 3,856評(píng)論 0 10

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