Git基本使用

1、安裝和設(shè)置用戶名和郵箱

# 配置相關(guān)信息
git config
git config --global user.name "wincharle"
git config --global user.email "wincharle@qq.com"

2、git工作圖解

image
  • workspace:工作區(qū)
  • index/stage:暫存區(qū)
  • repository:倉庫區(qū)(或者本地倉庫)
  • remote:遠程倉庫

3、創(chuàng)建版本庫

#當(dāng)前目錄創(chuàng)建一個版本庫
git init

#新建一個目錄,并將其初始化為一個git代碼庫
git init [project-name]

#下載一個項目和它的整個代碼歷史
git clone [url]

4、增加文件到暫存區(qū)

#添加文件到暫存區(qū),可以一次添加多個
git add file1 file2 ...

#添加文件夾到暫存區(qū)
git add [dir]

#添加當(dāng)前文件夾下的所有文件到暫存區(qū)
git add

5、代碼提交到本地倉庫

#提交暫存區(qū)到倉庫區(qū)
git commit -m "message"

#提交暫存區(qū)指定文件到倉庫區(qū)
git commit file1 file2 ... -m "message"

6、文件修改查詢

#工作區(qū)狀態(tài)查看,查看哪些文件被修改
git status

#查看修改的具體內(nèi)容
git diff

7、倉庫區(qū)版本控制git reset

git reset主要做兩件事:

  • 修改倉庫區(qū)HEAD指針
  • 根據(jù)參數(shù)--hard、--soft和--mixed選擇是否覆蓋緩存區(qū)和工作區(qū),默認(rèn)是mixed
# 默認(rèn)情況下是覆蓋所有文件,如果想覆蓋一個文件,添加文件名
git reset --hard --mixed --soft [commit]

git reset HEAD [filename]
#HEAD指向當(dāng)前版本,HEAD^指向上一個版本
git reset --hard HEAD^

#通過版本號
git reset --hard commit_id

#通過git log查看提交歷史
git log

#通過git reflog查看歷史命令,以確定回到未來哪個版本
git reflog

8、刪除文件

#從版本庫中刪除文件
git rm file
git commit -m "remove file"
#誤刪文件,checkout實際是從版本庫里的文件代替工作區(qū)的版本
git checkout -- file

9、遠程倉庫

1、添加遠程庫

# 增加一個姓的遠程倉庫,并命名
git remote add [name] [url]

# origin就是https://github.com/wincharle/learngit這個倉庫
git remote add origin https://github.com/wincharle/learngit

# 本地倉庫的內(nèi)容推送到遠程倉庫,第一次Push添加-u
git push -u origin master
git push origin <branch>

NOTE: 如果遠程倉庫已經(jīng)有內(nèi)容,需要pull一下,并合并內(nèi)容

git pull origin master --allow-unrelated-histories

2、克隆遠程庫

# 克隆倉庫
git clone https://github.com/wincharle/test

10、分支

# 查看分支
git branch

# 新建分支
git branch <branchname>

# 切換分支
git checkout <branchname>

# 合并分支
git merge <branchname>

# 刪除分支
git branch -d <branchname>

1、checkout(檢出)

  • 檢出分支,HEAD指向branch,更新緩存區(qū)和工作區(qū)
git checkout branch
  • 從commit里檢出文件,重置緩存區(qū)和工作區(qū)
# 顯示的提供commit,重置緩存區(qū)和工作區(qū)
git checkcout commit -- filename

# 不提供commit,默認(rèn)是緩存區(qū)
git checkout -- filename

2、分支合并

# 直接merge,但是有缺點
git merge branch

# 直接merge通過git log查看不到分支信息
git log --graph

# 提供參數(shù)--no-ff,會有一次commit
git merge --no-ff -m "merge message"

3、分支管理策略
A和B同時工作,有兩個分支master和dev。

第1步:2人同時把遠程倉庫克隆到本地

git clone https://github.com/wincharle/learngit

NOTE:克隆節(jié)點的話,只會克隆master節(jié)點。

第2步:A和B需要在dev節(jié)點上開發(fā),就必須將遠程分支下載到本地,可以通過checkout或者fetch

# checkout遠程分支
git checkout -b dev origin/dev

# fetch
git fetch origin 遠程分支名:本地分支名

第3步:A完成開發(fā)后push到遠程倉庫

git add ...
git commit ...
git push origin dev

第4步:B完成開發(fā)后也push到遠程倉庫,但是發(fā)生錯誤。原因是A和B提交的版本有沖突,需要先pull一下,然后本地合并后,解決沖突,再推送。

git pull origin dev

11、標(biāo)簽管理(標(biāo)簽和commit就類似于域名和IP地址)

# 給一個commit創(chuàng)建一個標(biāo)簽,默認(rèn)commit是HEAD
git tag <name>
git tag <name> <commit>

# 給標(biāo)簽指定標(biāo)簽信息
git tag -a <name> -m "blabla...."

# 查看所有標(biāo)簽
git tag

# 查看一個標(biāo)簽的信息
git show <tagname>

# 推送本地標(biāo)簽
git push origin <tagname>

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

# 刪除本地標(biāo)簽
git tag -d <tagname>

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

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

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