Git是目前世界上最先進的分佈式版本控制系統。GitLab是一個利用Ruby on Rails開發的開源應用程序,實現一個自託管的Git項目倉庫,可以瀏覽源代碼,管理缺陷和註釋。
1.安裝git
首先,輸入git,檢查系統是否安裝git
然後,如果沒有安裝,輸入命令
sudo apt-get install git
2.創建版本庫(repository)
(1)創建空目錄
$ mkdir learngit
$ cd $project_root #進入工程目錄
$ pwd #顯示當前目錄
(2)創建空倉庫$ git init #初始化git倉庫
$ ls -ah #查看隱藏文件
可以發現目錄下多了一個.git文件3.把文件添加到倉庫
git add <file> #添加文件到倉庫 可反覆多次使用,添加多個文件;
git commit -m "init commit" #提交代碼到倉庫
例如:添加多個文件到倉庫$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
4.添加到遠程庫
git remote add origin [email protected]:namespace/projectname.git #連接到git遠程庫
git push -u origin master #第一次把本地庫的所有內容(當前分支master)推送到遠程庫上,並將本地的master分支和遠程的master分支關聯起來
以後提交的命令
$ git push origin master
5.從遠程庫克隆
首先,登陸GitHub,創建一個新的倉庫
用命令git clone克隆一個本地庫
$ git clone [email protected]:examplename/examplefolder.git
$ cd examplefolder
$ ls
或者使用http協議地址$ git clone https://github.com/examplename/examplefolder.git
6.版本退回$ git reset --hard HEAD^
用git status 查看是否有文件被修改過;
用git diff查看修改內容;
用git log查看提交歷史,以便確定要回退到哪個版本。
用git reflog查看命令歷史,以便確定要回到未來的哪個版本。
7.撤銷修改
丟棄工作區的修改
$ git checkout -- readme.txt
把暫存區的修改撤銷掉,重新放回工作區
$ git reset HEAD readme.txt
$ git checkout -- readme.txt
8.刪除文件從文件管理器中刪除文件
$ rm test.txt
從版本庫刪除文件$ git rm test.txt
$ git commit -m "remove test.txt"
從git上刪除文件
$ git rm test.txt
$ git commit -m "remove test.txt"
$ git push origin develop
把誤刪的文件恢復到最新版本
$ git checkout -- test.txt
9.創建與合併分支
$ git checkout -b dev #創建並切換到dev分支
$ git branch #查看當前分支
$ git add readme.txt #在dev分支添加並提交文件
$ git commit -m "branch test"
$ git checkout master #切換回主分支master
$ git merge dev #將dev分支的結果合併到主分支master
$ git branch -d dev #刪除dev分支
$ git branch #查看當前分支
10.解決衝突
當Git無法自動合併分支時,必須先手動解決衝突(通過vim)。解決衝突後,再提交,合併完成。
如下命令可查看分支合併圖
git log --graph
11.臨時工作分支
修復bug時,我們會通過創建新的bug分支進行修復,然後合併,最後刪除;
當手頭工作沒有完成時,先把工作現場git stash一下,然後去修復bug,修復後,再git stash pop
,回到工作現場。
$ git status
$ git stash #隱藏當前工作現場
$ git status
$ git checkout master #切換到master分支
$ git checkout -b issue-101 #創建新的分支,並在本地修改文件
$ git add readme.txt
$ git commit -m "fix bug 101"
$ git checkout master #切換到master分支
$ git merge --no-ff -m "merged bug fix 101" issue-101 #合併臨時分支issue-101
$ git branch -d issue-101 #刪除分支issue-101
$ git checkout dev #切換到dev分支
$ git status
$ git stash list
$ git stash pop #恢復工作現場,並刪除stash內容
$ git stash list
$ git stash apply stash@{0} #可以多次stash,恢復指定的stash
12.多人協作
$ git remote -v #查看遠程庫的信息 會顯示出可以抓取和推送的origin地址
- 推送分支
在git中,分支完全可以在本地自己玩,是否推送,視個人情況而定。
master分支是主分支,要時刻與遠程同步;
dev分支是開發分支,也需要與遠程同步;
bug分支只用於在本地修復bug,沒必要推到遠程;
feature分支是否推到遠程,取決於你是否和你的小夥伴合作在上面開發。
$ git push origin dev #把本地dev分支推送到遠程庫
- 抓取分支
$ git clone [email protected]:examplename/examplefolder.git
$ git branch #查看分支
$ git checkout -b dev origin/dev #創建遠程origin的dev分支到本地
$ git commit -m "add /usr/bin/env"
$ git push origin dev #把dev分支push到遠程
$ git add hello.py
$ git commit -m "add coding: utf-8"
$ git push origin dev
$ git pull #未指定本地dev分支和遠程origin/dev分支的鏈接 no tracking information
$ git branch --set-upstream dev origin/dev
$ git pull
git pull成功,但是合併有衝突,需要手動解決(通過vim進入文件,手動修改刪除),解決後,提交,再push。
$ git commit -m "merge & fix hello.py"
$ git push origin dev