常用git命令

git


1. git init

使用git init命令,把一個目錄變成Git可以管理的倉庫。創(chuàng)建成功,會提示創(chuàng)建了一個空的倉庫(empty Git repository),該文件夾下回有一個隱藏的.git文件。

2. git add

使用git add命令,將文件添加到倉庫,該命令實際上是一個腳本命令,沒有任何提示,說明添加成功。例如:git add readme.md

3. git commit

使用git commit命令,將文件提交到倉庫。一般增加 -m 來添加一些提交說明。例如:git commit -m wrote a readme file

4. git status

使用git status查看倉庫當(dāng)前的狀態(tài),比如哪些文件被修改過

5. git diff

使用git diff查看文件具體的修改內(nèi)容

6. git log

git log命令可以顯示從最近到最遠(yuǎn)的提交日志。如果嫌輸出的信息太多,可以使用git log --pretty=oneline來查看日志信息

7. git reset

Git必須知道當(dāng)前版本是哪個版本,在Git中,用 HEAD 表示當(dāng)前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當(dāng)然往上100個版本寫100個^比較容易數(shù)不過來,所以寫成HEAD~100。

現(xiàn)在,我們要把當(dāng)前版本回退到上一個版本,就可以使用git reset命令:
git reset --hard HEAD^

8. git relog

現(xiàn)在,你回退到了某個版本,當(dāng)想恢復(fù)到新版本怎么辦?找不到新版本的commit id怎么辦?Git提供了一個命令 git reflog 用來記錄你的每一次命令:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file

9. git checkout

如果你在readme.txt中加入了一行文件,又感覺不好,你可以刪除新加的,恢復(fù)到原來的。Git會告訴你,git checkout -- file 可以丟棄工作區(qū)的修改,例如:

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:

  1. 一種是readme.txt自修改后還沒有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài);
  2. 一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。

總之,就是讓這個文件回到最近一次git commitgit add時的狀態(tài)。

現(xiàn)在來看幾種情況,如何撤銷修改

  1. 當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令git checkout -- file。

  2. 當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步:

第一步用命令git reset HEAD file,就回到了1;
第二步按1操作。
  1. 已經(jīng)提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節(jié),不過前提是沒有推送到遠(yuǎn)程庫。

10. git rm

確實需要從版本庫中刪除文件,那就用命令git rm刪掉,并且git commit。

11. git remote add...建立遠(yuǎn)程倉庫連接

將本地倉庫和遠(yuǎn)程倉庫進(jìn)行連接的命令為:

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

請千萬注意:把上面的onlyone替換成你 自己的GitHub賬戶名,否則,你在本地關(guān)聯(lián)的就是我的遠(yuǎn)程庫,關(guān)聯(lián)沒有問題,但是你以后推送是推不上去的,因為你的SSH Key公鑰不在我的賬戶列表中。

添加后,遠(yuǎn)程庫的名字就是origin,這是Git默認(rèn)的叫法,也可以改成別的,但是origin這個名字一看就知道是遠(yuǎn)程庫。

注意:要關(guān)聯(lián)一個遠(yuǎn)程庫,使用命令:

git remote add origin git@server-name:path/repo-name.git

12. git push

將本地庫的所有內(nèi)容推送到遠(yuǎn)程倉庫上:

$ git push -u origin master

把本地庫的內(nèi)容推送到遠(yuǎn)程,用git push命令,實際上是把當(dāng)前分支master推送到遠(yuǎn)程。

注意:要關(guān)聯(lián)一個遠(yuǎn)程庫,使用命令

git remote add origin git@server-name:path/repo-name.git

關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改。

13. git clone

使用git clone克隆一個遠(yuǎn)程倉庫,例如:

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

14. 創(chuàng)建分支

首先創(chuàng)建分支dev,然后切換到dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'

git checkout命令加上 -b 參數(shù)表示創(chuàng)建并切換,相當(dāng)于以下兩條命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然后,用git branch命令查看當(dāng)前分支:

$ git branch
* dev
  master

git branch命令會列出所有分支,當(dāng)前分支前面會標(biāo)一個 * 號。

15. 合并分支

dev 分支的工作成果合并到 master 分支上,git merge命令用于合并指定分支到當(dāng)前分支:

$ git merge dev
Updating d17efd8..fec145a
Fast-forward
 readme.txt |    1 +
 1 file changed, 1 insertion(+)

注意: 上面的Fast-forward信息,Git告訴我們,這次合并是 “快進(jìn)模式”,也就是直接把master指向dev的當(dāng)前提交,所以合并速度非???,但是并不是每次合并都是快進(jìn)模式。

16. 刪除分支

合并完成后,就可以放心地刪除dev分支了:

$ git branch -d dev
Deleted branch dev (was 5659891).

刪除后,查看branch,就只剩下master分支了:

$ git branch
* master

小結(jié):

  • 查看分支: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>

17. 解決沖突

在兩個分支上修改同一個文件時,造成了修改的不一致,在使用 git merge <name>時,就不能使用 快進(jìn)模式 進(jìn)行合并,而是需要手動解決每個沖突。當(dāng)手動解決完沖突之后:

  • 使用git add <fileName>添加沖突文件
  • 使用git commit 提交解決后的沖突文件
  • 使用git log --graph --pretty=oneline --abbrev-commit 查看已經(jīng)解決的分支合并圖
  • 使用git branch -d <branchName> 刪除分支

18. 推送分支

要查看遠(yuǎn)程庫的信息,用 git remote 或者 git remote -v 顯示更加詳細(xì)的信息。

推送分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠(yuǎn)程庫對應(yīng)的遠(yuǎn)程分支上:

git push origin master

如果要推送其他分支,比如dev,就改成

git push origin dev

19. 多人協(xié)作

多人協(xié)作的工作模式通常是這樣:

  • 首先,可以試圖用git push origin branch-name推送自己的修改;
  • 如果推送失敗,則因為遠(yuǎn)程分支比你的本地更新,需要先用 git pull 試圖合并;
  • 如果合并有沖突,則解決沖突,并在本地提交;
  • 沒有沖突或者解決掉沖突后,再用git push origin branch-name 推送就能成功!

如果git pull提示“no tracking information”,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream branch-name origin/branch-name。

20.Git取消跟蹤某個文件

git rm --cached FILENAME

如果是文件夾

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

  • 下面Git 命令清單部分來自廖雪峰,部份來自其他各處收集。幾個專用名詞的譯名如下。 Workspace:工作區(qū) I...
    亂塵閱讀 372評論 0 1
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,835評論 9 163
  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,853評論 1 26
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,813評論 4 54
  • 風(fēng)還在呼呼不停!雨水混著眼淚一路狂奔。 付出總讓人上癮!保護(hù)著弱小與無動于衷。 心碎的樣子蒼老,風(fēng)箏斷線或許會真逍...
    善良的老虎閱讀 213評論 0 0

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