標註紅色爲需要根據實際情況修改的部分
0.定義
fork:將GItHub的某個特定倉庫複製到自己的賬戶下
follow:關注
repository :倉庫
HEAD:當前分支中最新一次提交的指針
conflit:衝突,比如同個文件不同修改在合併時的衝突
issue:主要是用來進行bug跟蹤及軟件討論
FETCH_HEAD: 是一個版本鏈接,記錄在本地的一個文件中,指向着目前已經從遠程倉庫取下來的分支的末端版本。
.gitignore 文件:記錄不需要在Git倉庫中進行版本管理的文件
.license 文件 :表明倉庫內容的許可協議
.git文件:存儲管理當前目錄內容所需的倉庫數據,倉庫管理者文件的歷史快照,可從倉庫中調取歷史快照,在目錄中打開內容,目錄的內容又稱爲附屬於該倉庫的工作樹。編輯時在工作樹中進行,然後記錄到倉庫中。
1.設置用戶名及郵箱
git config --global user.name "myname"
git config --global user.email "myemail"
也可在~/.gitconfig 中查看或編輯
2.初始化及查看公鑰
ssh -keygen -t rsa -C "myemail"
cat ~/.ssh/id_rsa.pub
3.查看狀態信息
git status
各類狀態:
Untracked files:未添加至git倉庫的文件
changes to be committed:暫存區中未被提交的文件
4.新增一個文件並提交
git add newfile 加入暫存區,暫存區是提交之前的臨時區域
git commit -m ‘add new file’ 提交信息,將暫存區中的文件保存到倉庫的歷史記錄中。多行提交信息使用git commit打開編輯器編輯,若編輯器啓動後未經編輯直接關閉,則提交被終止
git push 更新Github上的倉庫
可使用git commit -am 來實現add和commit兩個步驟
5.查看日誌
git log 查看以當前狀態爲終點的歷史日誌
git reflog 查看當前倉庫執行過的操作日誌,不以當前狀態爲終點,包含commit,checkout, merge等各種操作
git log -n 1 查看最新的一條提交
git log 目錄名 顯示該目錄下的日誌
git log 文件名 顯示文件相關日誌
git log -p 文件名 顯示文件提交前後差別
git log --graph 以圖表形式查看分支,可查看特性分支(相對於主幹分支)的創建及合併
6.初始化git本地版本管理倉庫,進行版本管理
git init
7.查看更改前後差別
git diff 查看工作樹與暫存區差別,+表示新添加的行,-表示被刪除的行
git diff HEAD 查看工作樹與最新提交的差別,HEAD指當前分支中最新一次提交的指針
8.查看、新建分支
git branch 顯示分支列表,查看當前所在分支
git branch -a 可查看遠程分支信息
git branch 新分支名 創建新分支
9.切換分支
git checkout feature-test
git checkout - 切換回上一個分支
若要創建切換一個新分支,以下兩種方式等效
方式一:
git checkout -b newbranch
方式二:
git branch newbranch
git checkout newbranch
10.合併分支
git checkout master
git merge --no-ff dev 使用--no-ff參數可記錄本次合併信息,啓動編輯器後可錄入合併提交的信息,可使用默認內容Merge branch ‘dev’直接保存關閉編輯器
11.回溯、推進歷史版本
git reset --hard commit號 讓倉庫的HEAD、暫存區、當前工作樹回溯到指定狀態
12.衝突
舉個例子,在merge時發生comflict,報錯信息爲:
CONFLICT(content):Merge conflict in README.md
Automatic merge failed:fix conflicts and then commit the result
解決方法:打開衝突文件README.md重新編輯,並add commit
#Git衝突實例
<<<<<<<HEAD
-A
=========
-B
>>>>>>>dev
=========以上是當前HEAD的內容,下面是要merge的分支的內容,修改爲
#Git衝突實例
-A
-B
再通過add 和commit提交
13.修改上一條提交信息
git commit --amend
14.修正上一次提交的內容並壓縮歷史
在歷史記錄中並不需要修正拼寫錯誤等版本,因此存在修正上次提交內容的需求,具體步驟爲:
1)先使用add commit 進行一次提交,得到新的一次歷史記錄
2)使用git rebase 壓縮歷史,將兩次歷史記錄合併
git rebase -i HEAD-2
選定當前分支最後包含HEAD(最新提交)在內的兩個最新歷史記錄對象,並在編輯器中打開
pick commit號1 commit信息1
pick commit號2 commit信息2
3)修改內容
若要將commit號2 的提交內容壓縮到commit號1中,修改對應的pick爲fixup,保存並關閉
pick commit號1 commit信息1
fixup commit號2 commit信息2
4)合併後commit號1已變更,可用git log --graph 查看
15.創建遠程GIthub倉庫,並將本地倉庫推送至遠程倉庫
比如我在本地編輯好代碼了,想將多個文件的內容推送到GIthub上保存。
1)創建遠程Github倉庫
github上:new repository——repository name 保持一致,填本地的名稱——不要創建readme.md——creat repository
2)對本地倉庫添加遠程倉庫
本地:git remote add origin [email protected]:xxxxxx
執行之後自動將遠程倉庫的名稱設置爲origin
3)推送內容
git push -u origin master 將當期分支的內容推送給遠程倉庫origin的master分支
-u 參數將遠程倉庫origin的master分支設置爲當前分支的上游(upstream),下次git pull 時就不用添加參數啦
也可推送到origin的其他分支 git push origin work 可實現新建遠端新分支
16.獲取遠程倉庫
獲取遠程master:git clone 後默認處於master分支下,且系統自動將origin設置成遠程倉庫的標識符,即本地master=遠程origin master
新建分支並獲取遠程其他分支:git checkout -b dev origin/dev -b新建了本地dev分支
獲取遠程其他分支:git pull origin dev
17.pull request
1)Github界面fork他人代碼
2)clone至本地修改,創建特性分支進行修改,提交修改後的代碼至github遠程分支
3)通過github界面分支名左側綠色按鈕查看分之間差別,確認是否正確
4)點擊create pull request——編輯請求——點擊send pull request
18.更新單個文件
git fetch origin master 獲取最新數據,更新遠程代碼到本地倉庫,不自動merge
gi
t checkout origin/master c.txt
19.更新本地文件到最新,獲取最新數據
方案一:
git fetch origin
git merge origin/master
方案二:
git fetch origin master:tmp
git diff tmp 將當前分支與tem進行比較
git merge tmp 合併merge分支到當前分支
方案三:
git pull origin master
20.撤銷修改
用git status 可以獲得一些建議
情景一:未add至暫存區,撤銷到和版本庫一致,即最近一次commit狀態
git checkout -- filename.txt
情景二:已add至暫存區,撤銷到和暫存區一樣,即最近一次add狀態
git checkout -- filename.txt
情景三:已add至暫存區,撤銷到暫存之前
git reset HEAD filename.txt 撤銷暫存區的修改,重新放回工作樹
git checkout -- filename.txt 丟棄工作區的修改
注意HEAD表示最新版本,git reset還可進行版本回溯功能
情景四:已提交到版本庫,回退到上次提交後的狀態
git reset --hard commit號
21.從版本庫中恢復被刪除的文件
git checkout -- filename.txt
22.刪除未add即untracted的文件
git clean -n 顯示要刪除的東西
git clean -f 刪除文件
git clean -df 刪除文件和目錄
參考網址:https://blog.csdn.net/richard_jason/article/details/52892387
《Github入門與實踐》