Git基礎學習

jopen 9年前發布 | 23K 次閱讀 Git 版本控制系統

git的基本命令,這篇文件講的還是比較簡潔扼要!

Git基礎學習

安裝msysgit

下載地址:msysgit,安裝完成后配置系統環境變量,打開git bash,盡量少用圖形化工具git gui,推薦使用命令行。

Git基礎學習

Git基礎學習

你可以在本地操作git,也可以在遠程服務器倉庫操作git,例如github,這樣你就需要配置下ssh key,詳情請查看官方文檔說明generating-ssh-keys

git操作

1、檢出倉庫(克隆倉庫)

本地克隆:

$ git clone /path/to/repository

遠程克隆:

$ git clone <server>

ssh方式(推薦),例如:

$ git clone git@github.com:hcy2367/hcy2367.github.io.git

https方式,例如:

$ git clone https://github.com/hcy2367/hcy2367.github.io.git

2、創建新倉庫

$ git init

3、添加工作區(working dir)新的或改動的文件到暫存區(Index或stage)

$ git add <filename> | --all | -A

git工作區,暫存區,HEAD區(可以理解為本地倉庫master分支的最新版本)關系圖:

Git基礎學習

4、從暫存區刪除添加或改動的的文件

$ git rm --cached <filename> | *

5、查看當前倉庫狀態

執行add、commit操作之前和之后最好都要查看下當前提交的一些狀態信息,防止漏添加,錯提交

$ git status

6、查看和對比修改的內容

$ git diff <filename>

7、查看提交的歷史記錄版本(添加參數:–pretty=oneline,用于輸出少量信息)

$ git log

8、提交到當前分支master HEAD區

$ git commit -m '代碼提交信息'

9、版本回退

HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,往上100個版本HEAD~100,如回退到上一個版本,則命令如下:

$ git reset --hard HEAD^

其中–hard參數表示撤銷工作區與暫存區的修改,回退到指定歷史版本,可使用如下命令:

$ git reset --hard 20038

其中20038為提交版本的前五位ID號(原始:20038c521d4e81aca8ec8bca9f05d50ebb4fb835),查看時可使用如下命令:

$ git reflog

10、撤銷修改

丟棄工作區的修改,已添加到暫存區的文件不受影響,注意:不能少了–參數,命令如下:

$ git checkout -- <filename> | *

把暫存區的修改撤銷掉,重新放回工作區,命令如下:

$ git reset HEAD <filename> | *

11、刪除文件

刪除后再commit到HEAD區,如果誤刪文件了,可以恢復到該文件的最新版本。

$ git rm <filename>

12、推送到遠端倉庫

$ git push -u origin master | <branch>

-u參數表示初次推送時把本地的master分支和遠程的master分支關聯起來;

如果你還沒有克隆現有倉庫,并欲將你的本地倉庫連接到某個遠程服務器,你可以使用如下命令添加:

$ git remote add origin <server>

例如這樣你就能夠將你的改動推送到所添加的服務器上去了:

$ git remote add origin git@github.com:hcy2367/hcy2367.github.io.git

13、分支

Git基礎學習

創建分支:

$ git checkout -b <branch>

切換回主分支:

$ git checkout master

列出所有分支:

$ git branch

合并指定分支到當前分支(默認使用fast forward方式):

$ git merge <branch>

普通模式合并(禁用fast forward,因為該方式合并后看不到歷史提交信息):

$ git merge --no-ff -m "merge with no-ff" <branch>

刪除分支:

$ git branch -d <branch>

丟棄一個沒有被合并過的分支,可以通過如下命令強行刪除:

$ git branch -D <branch>

推送到遠端倉庫:

$ git push origin <branch>

14、更新與合并

查看遠程信息:

$ git remote -v

從遠程獲取最新版本到本地倉庫,并自動merge到本地分支:

$ git pull origin master

從遠程獲取最新版本到本地倉庫,不自動merge到本地分支:

$ git fetch

合并分支前先到另外一個分支更新代碼,然后本地合并后提交到遠程倉庫; 當有沖突時,可使用$ git diff或$ git status命令查看分支的差異,手工解決后,再執行$ git add <filename>命令以將它們標記為合并成功。查看提交記錄圖形信息:

$ git log --graph --pretty=oneline --abbrev-commit

15、標簽(可以理解為版本庫的快照)

創建標簽:

$ git tag <tagname>

可使用命令如下命令找到歷史提交的ID號:

$ git log --pretty=oneline --abbrev-commit

再打標簽:

$ git tag v1.0 6224937

還可以創建帶有說明的標簽,用-a指定標簽名,-m指定說明文字:

$ git tag -a v1.1 -m "version 1.1 released" 3628164

查看標簽:

$ git tag

查看標簽信息:

$ git show v1.0

刪除本地標簽:

$ git tag -d v1.1

推送標簽到遠程:

$ git push origin <tagname>

一次性推送全部未推送的標簽:

$ git push origin --tags

刪除遠程標簽(先刪除本地,再刪除對應的遠程tag):

$ git tag -d v1.1
$ git push origin :refs/tags/v1.1

16、丟棄你所有的本地改動與提交,可以到服務器上獲取最新的版本并將你本地主分支指向到它:

$ git fetch origin
$ git reset --hard origin/master

17、移除所有未跟蹤文件(一般會加上參數-df,-d表示包含目錄,-f表示強制清除)

$ git clean [options]

18、多人協作的工作模式

  • 首先,可以試圖用$ git push origin <branch>推送自己的修改;

  • 如果推送失敗,則因為遠程分支比你的本地更新,需要先用$ git pull試圖合并;

  • 如果合并有沖突,則解決沖突,并在本地提交;

  • 沒有沖突或者解決掉沖突后,再用$ git push origin <branch>推送就能成功;

  • 如果git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令$ git branch --set-upstream <branch> origin/<branch>解決即可。

19、git工作流程圖

說了這么多,來張工作圖,可能更加通俗易懂:

Git基礎學習

總結

掌握上面的命令后基本上可以輕松使用git來管理項目和參與團隊開發了,當你欣賞到git的過人和可愛之處后,你可能再也不想使用svn來管理代碼了,媽媽也不用擔心我如何使用git了,熟悉操作后你就可以遨翔于githubgitcafegitlab的天空,為開源生態圈貢獻自己的一份力量。不管是forkstarclone,還是pull request,總要嘗試下未知的世界。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!