一、基本介紹
Git是目前世界上最先進的分佈式版本控制系統,我們常用它來管理項目的版本更迭。
二、常見概念
工作區:在你的計算機上能看到的目錄。
暫存區:在 Git的版本庫中,需要提交的文件修改通通放到暫存區,然後一次性提交暫存區的所有修改 。
版本庫:又名倉庫,是新建版本庫時在工作區下生成的一個隱藏目錄.git
(通過 ls -a
命令可以看到)。
三、常用指令
-
安裝
git
。適用於Ubuntu系統sudo apt-get install git
-
配置
git
git config --global user.name "Your Name" git config --global user.email "[email protected]"
-
創建版本庫,也稱倉庫
git init #在當前路徑下創建倉庫
-
添加文件到當前倉庫
git add readme.txt git commit -m "write a readme file" #描述此次改動的說明信息
-
查看提交歷史
git log #每次改動之前提交的說明信息
-
版本回退
git reflog #先用 git log/reflog 查看commitID git reset --hard commitID git reset --hard HEAD^ #回退到上一個版本
-
還原誤刪的工作區的文件。使用條件是在誤刪之前已經將最新代碼。
git checkout --readme.txt
git checkout
其實是用版本庫裏的版本替換工作區的版本 -
克隆遠程庫到本地
git clone https://github.com/your_github_name/your_hub.git #https速度較慢 git clone [email protected]:your_github_name/your_hub.git#克隆在當前目錄下
-
本地倉庫關聯遠程庫
-
創建
SSH Key
的祕鑰對。這樣無需每次push
都要輸入賬號密碼。ssh-keygen -t rsa -C "[email protected]" #一開始配置的git的郵箱
輸完這條命令之後一路回車不需要設置各種密碼,然後在
/root
目錄下進入.ssh文件 ,id_rsa
爲私鑰(不能泄露),id_ras.pub
爲公鑰。到自己的 github 的Settings
下的SSH and GPG keys
下添加自己的公鑰即可。 -
本地倉庫關聯
git remote add origin [email protected]:your_github_name/your_hub.git git push -u origin master #第一次推送master分支的所有內容 git push origin master #推送最新修改
如果這是一個非空倉庫,需要
git pull origin master --allow-unrelated-histories
,將遠程的代碼拉到本地。
- 創建與合併分支
-
在
master
分支下創建pa1
分支,然後切換到pa1
分支git checkout -b pa1
以上命令相當於以下兩條命令:
git branch pa1 #創建分支pa1 git checkout pa1 #切換到分支pa1
執行之後,目前在
pa1
分支上,可以用git branch
命令查看。 -
在
pa1
分支下開發git add file git commit -m '..."
跟
master
下開發更迭並無兩樣。當前版本開發完成之後,切回到master
分支:git checkout master
-
合併刪除
pa1
分支git merge pa1 git branch -d pa1
對於不需要合併的分支可以通過
git branch -D pa1
刪除。
-
解決衝突
當分支
pa1
與master
都有新的提交時,且多人都對同一個文件進行修改,執行git merge pa1
之後只能手動修改文件(儘管有提示不同分支的代碼區別,但是依舊很麻煩),最好的做法就是避免這種情況的發生。對應一般項目,給出的建議是當新建分支之後,master分支上就不要再做提交,直到子分支合併到master之後再提交到遠程倉庫。 -
推送到遠程倉庫
git remote -v #查看遠程信息庫 git remote remove origin #刪除origin遠程庫 git pull origin master #只要遠程代碼有更新,都需要先pull下來 git push origin master #將master上版本推送到origin上
-
github
上實時更新別人的項目先
fork
一下,在自己的遠程倉庫下會有複製下來的對方當前的項目版本。對方若干個版本更迭完之後,點擊
Pull request
而不是New pull request
,然後將base fork
改爲自己的倉庫,head fork
爲對方的,點擊Create pull request
之後,對方的分支就合併到你這來了。 -
爲他人項目貢獻自己的力量
先
fork
一下,在自己的遠程倉庫下會有複製下來的對方當前的項目版本。clone
到本地,本地開發修改好項目之後,先push
到遠程倉庫(就是我們fork下來的那個),然後在github上該倉庫中,點擊New pull request
,選擇好兩個fork之後,確認即可。