文章目錄
git是一個版本管理工具。是一個分佈式的版本控制系統,與svn集中式相比,它沒有中央服務器。每臺個人電腦就是一個版本庫,每個開發人員提供自己的修改代碼到共享版本庫(也稱作遠程倉庫)中即可。
遠程倉庫和本地版本庫的內容是一模一樣的。svn則必須連接到服務器上才能完成代碼的提交和修改。
Git常用命令流程
由Git
常用命令流程圖所示,可以看到右下角有一個本地倉庫的閉環。先是創建本地倉庫,本地倉庫創建好了之後,就可以在裏面添加代碼,之後代碼放入工作區,如果想把代碼加入到本地倉庫中去的話,先需要將其放入暫存區,之後通過commit
將其提交到本地倉庫中去。若想再修改,還可以把它checkout
下來,這樣就形成了一個本地的閉環。
當需要與別人協作的時候,我們將本地倉庫複製一份到遠程倉庫即可(push
)。其他開發人員可以clone
一份到自己的本地倉庫即可。
如果想拿到別人更改後的代碼,將其pull
下來就可以。
Git安裝
- 安裝地址:https://git-scm.com/download
使用本地版本庫
創建
建立本地倉庫時需要一個空的文件夾,之後在這個文件夾下初始化即可:
git init
創建完成之後會生成一個隱藏文件夾.git
。到此就創建好了本地倉庫。一旦創建了一個本地倉庫,默認就會帶上一個分支,這個分支叫主分支(master
)。
添加文件到暫存區
.git
叫做本地版本庫,包含.git
的文件目錄叫做工作目錄。如果想要在本地倉庫中添加一個文件的話,這個文件必須要在工作目錄下面。
通過git status
命令用於查看項目的當前狀態。
git status
如果新建一個文件在此目錄下,我們可以將其添加到暫存區(並非本地倉庫)中。
git add XXX.cpp/readme.md等
除此之外還可以:
git add . 將當前目錄下修改的所有代碼從工作區添加到暫存區 . 代表當前目錄
添加文件到本地倉庫
添加到暫存區之後可以通過commit
提交到本地倉庫。此處提交需要寫日誌。到此文件就已經添加到本地倉庫中去了。
git commit -m "first commit"
範式爲:
git commit -m ‘註釋’ 將緩存區內容添加到本地倉庫
Git 爲你的每一個提交都記錄你的名字與電子郵箱地址,所以第一步需要配置用戶名和郵箱地址。
git config --global user.name 'runoob'
git config --global user.email [email protected]
修改文件
若文件有修改,我們需要先提交到暫存區,之後再提交到本地倉庫。
刪除文件
要從Git
中移除某個文件,就必須要從已跟蹤文件清單中移除,然後提交。可以用以下命令完成此項工作
git rm <file>
如果刪除之前修改過並且已經放到暫存區域的話,則必須要用強制刪除選項 -f
:
git rm -f <file>
刪除版本庫中的文件,但本地保留此文件。
git rm --cached <file>
當執行 git rm --cached <file>
命令時,會直接從暫存區刪除文件,工作區則不做出改變。
當執行 git checkout .
或者 git checkout -- <file>
命令時,會用暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區的改動。
GitHub上創建倉庫
在實際開發過程中,我們需要多個人操作同一個代碼,因此需要遠程倉庫。
Github
上面創建倉庫直接界面化操作就可以了。創建好之後我們就有了一個遠程倉庫。
遠程倉庫建立好之後,我們需要建立一個本地倉庫和遠程倉庫的一個連接。
git remote add origin https://XXX/XXX.git
其中的origin
是一個通用的叫法,代表是哪個遠程倉庫。也可以取名origin1
等。
本地代碼推送到遠程倉庫
git push
的一般形式爲 git push <遠程主機名> <本地分支名> <遠程分支名>
:
git push -u origin master
將本地的文件推送到遠程服務器即可。第二次提交使用時,如果還是提交到原來的庫,可以直接用git push
,不需要重新git remote add ...
,再git push...
,如果代碼更新也可以用上面的步驟。
如果遠程倉庫已經有了的話,直接建立連接,然後push
就可以了。
創建ssh密鑰及在Github上配置公鑰
- 生成本地密鑰
ssh-keygen -t rsa -C "註冊Github用的郵箱"
生成完之後通過以下命令獲得一串密鑰
cd ~/.ssh
cat id_rsa.pub
然後拿着這一串密鑰到GitHub
主頁 SSH and GPG keys
添加New Key
。
推送修改的文件及衝突解決
不能說每次都推送全部的文件,我們修改了那個文件就推送哪個文件就可以了。
在拉取和推送的時候經常會遇到衝突的問題。意思就是當另外一個用戶更新了服務端的代碼,而你本地的代碼不是最新的,再次做修改之後是無法推送上去的。所以我們需要將遠端的拉取下來,然後對比所修改的文件,之後進行手動修改。
更新最新版本:
git pull origin master
分支管理
當你執行 git init
的時候,默認情況下 Git
就會爲你創建 master
分支。
創建分支命令:
git branch (branchname)
沒有參數時,git branch
會列出你在本地的分支。
切換分支命令:
git checkout (branchname)
刪除分支命令:
git branch -d (branchname)
分支合併
一旦某分支有了獨立內容,你終究會希望將它合併回到你的主分支。 你可以使用以下命令將任何分支合併到當前分支中去:
git merge