git使用過程及常用命令


之前已經學習過git的相關內容,由於長時間沒用,今天就做個總結複習一下。git的安裝就不再進行介紹了。

1. 安裝git後,首先要設置用戶名和郵箱

git config --global user.name "dzysunshine"
git config --global user.email "[email protected]"

2. 創建本地倉庫(Respository)

先在Git目錄下創建一個空目錄,例如名爲learngit的目錄,進入該目錄,通過git init命令將其變爲Git可以管理的目錄。

mkdir learngit
cd learngit
git init

3. 在倉庫中添加內容

使用windows時要注意不要使用記事本編輯文件,使用Notepad++, 默認編碼設置爲UTF-8 without BOM即可,先手動用Notepad++創建一個readme.txt文件,然後執行以下操作。(注意創建的這個文件一定要放到learngit目錄(或其子目錄)下)

#把文件添加到倉庫
git add readme.txt
#通過下面命令告訴Git,把文件提交到倉庫
git commit -m 'create readme.file'

如果有多個文件,可以依次add多次,而commit只需一次。
第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;
第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

4. 查看工作區的狀態

使用 git status 命令。如果 git status 告訴你有文件被修改過,用git diff可以查看修改內容, 用git log命令查看歷史記錄。

git status
git diff readme.txt

5. 版本回退

git log 命令可以查看歷史記錄,用 git relog 命令可以查看記錄的每一次命令。

# 查看歷史提交版本的版本號,HEAD表示當前版本
git log --pretty=oneline
# 將當前板本回退到上一次更改的版本
git reset --hard HEAD^
#如果是想回退到上100個版本,可以使用下面代碼
git reset --hard HEAD~100

6. 管理修改

git diff HEAD – readme.txt 命令可以查看工作區和版本庫裏面最新版本的區別。

7. 撤銷修改

命令git checkout – readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷。
一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到最近一次git commit或git add時的狀態。

8. 刪除文件

  • 場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令 git checkout – file
  • 場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令 git reset HEAD file ,就回到了場景1,第二步按場景1操作。
  • 場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。
  • 命令git rm file 用於刪除版本庫中的一個文件。

9. 連接github

#創建SSH Key,一路回車就好
ssh-keygen -t rsa -C "[email protected]
  • 第一步,在用戶主目錄裏找到.ssh目錄,裏面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
  • 第二步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面。
  • 然後,點“Add SSH Key”,填上任意Title,在Key文本框裏粘貼id_rsa.pub文件的內容就可以了。

10. 創建遠程倉庫並與本地版本庫關聯

在github上創建一個新的respository,命名爲learngit,並複製SSH地址:
https://github.com/dzysunshine/learngit.git
回到我們的 Git Bash 界面,把本地 Git 庫與剛剛建的遠程倉庫關聯,輸入下列命令

# origin 就是遠程庫的名字
git remote add origin https://github.com/dzysunshine/learngit.git

把本地倉庫的所有文件(剛剛新建的 readme.md)上傳到 GitHub 上(第一次需要加-u,後面就不需要了)

git push -u origin master

在本地 learngit 倉庫中做任何改動後,都可以直接運行下面的語句添加、提交到倉庫並上傳到 GitHub 遠程倉庫中。

git add .
git commit -m "xxx"
git push origin master

11. 從 GitHub 克隆到本地倉庫

要克隆一個倉庫,首先必須知道倉庫的地址,然後使用git clone命令克隆。
Git支持多種協議,包括https,但通過ssh支持的原生git協議速度最快。

git clone [email protected]:dzysunshine/100-Days-Of-ML-Code.git

12. 創建與合併分支

創建分支

# 創建dev分支,然後切換到dev分支(-b表示創建並切換)
git checkout -b dev

上面一條代碼和下面的兩條代碼效果是相同的(需要注意,新版的git可以使用switch代替chenkout切換分支)

# 創建dev分支
git branch dev
# 切換到dev分支
git checkout dev

查看當前分支

# 查看當前分支
git branch
帶*的表示當前分支
* dev
  master

在dev分支工作完成時,將dev分支合併到master分支上,並刪除dev分支

# 先切換到master分支上
git checkout master
#  把dev分支的工作成果合併到master分支上
git merge dev
# 刪除dev分支
git branch -d dev
# 刪除後,查看branch
git branch

小結一下

查看分支:git branch
創建分支:git branch <name>
切換分支:git checkout <name>或者git switch <name>
創建+切換分支:git checkout -b <name>或者git switch -c <name>
合併某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>

13. 衝突問題

當Git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。
解決衝突就是把Git合併失敗的文件手動編輯爲我們希望的內容,再提交。
用git log --graph命令可以看到分支合併圖。
通常分支管理中合併的時候,使用no-off模式比較好,因爲它可以 在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支信息。

git merge --no-ff -m "merge with no-ff" dev

開發一個新feature時,最好新建一個分支;如果要丟棄一個沒有被合併過的分支,可以通過git branch -D name強行刪除。

14. 多人協作

多人協作的工作模式通常是這樣:

  1. 首先,可以試圖用git push origin 推送自己的修改;
  2. 如果推送失敗,則因爲遠程分支比你的本地更新,需要先用git pull試圖合併;
  3. 如果合併有衝突,則解決衝突,並在本地提交;
  4. 沒有衝突或者解決掉衝突後,再用git push origin 推送就能成功!

如果git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關係沒有創建,用命令git branch --set-upstream-to origin/。
這就是多人協作的工作模式,一旦熟悉了,就非常簡單。

15. 常用命令

  • cd :用來切換工作目錄,最常用的一個命令。簡單來講,cd A文件夾就是進入到A文件夾裏面的意思。
  • git status .:查看當前路徑下的的狀態。git下最最常用的一個命令。
  • git add .: 把工作區的所有變化,(就是你的所有改動),都添加到 版本庫/暫存區。
  • git commit -m “提交時說明信息”: 更進一步提交,並說明提交log。
  • git push: 把版本庫的所有更新內容, 都推送到遠程服務器。(就是推代碼/推上去)
  • git pull: 把代碼從遠程服務器拉取到本地。(俗稱拉代碼)
  • git log:查看提交歷史,與各次的提交說明。
  • git diff:比較工作區與暫存區的差異,就是比較看看你到底都做了什麼修改。
  • git clone url地址: 將遠程服務器上項目克隆到新創建的目錄中(第一次拉項目時使用, 後面的更新都用 git pull了)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章