關於git的一些常用命令
阿新 • • 發佈:2019-01-10
git安裝後基本資訊配置
設定使用者名稱:
git config --global user.name "xxxx"
設定使用者名稱郵箱:
git config --global user.email "xxxx"
- 檢視設定資訊:
git config --list
注:1.直接輸入git config --global user.name
或git config --global user.email
後回車也可以檢視name和email的資訊;
2.git config --global
:表示這臺機器上所有的git倉庫都會使用這個配置,當然,也可以對某個倉庫指定的不同的使用者名稱和郵箱。
常用命令
以新建專案shopping為例:
1. git init
git init
:進入到shopping專案的目錄下,建立本地倉庫
建立完成後會在根目錄下生產一個隱藏的.git資料夾,用來記錄所有本地的git操作
2. git add
git add
:把想要提交的程式碼先新增到暫存區中
在src目錄的com.example.shopping包下有兩個類:Food.java 和 Book.java
- 如果想新增 Food.java 這單個檔案,則輸入命令:
- 如果要新增某個目錄 buy ,則輸入命令:
- 一個一個的添加當然很麻煩,在 add 後面加一個小點兒,就能新增所有的檔案了:
- 如果想新增 Food.java 這單個檔案,則輸入命令:
3. git commit -m "輸入提交資訊"
git commit -m "輸入提交資訊"
:將 add 後的檔案提交到倉庫中去- -m 引數用來加上提交的描述資訊,沒有描述資訊的提交是不合規則的。
4.git status
git status
:檢視自上一次提交後文件的修改情況
可以看到 Food.java 已經發生了改變
5. git diff
git diff
:檢視所有檔案的變更內容
- 可以在git diff後面加想要檢視的改變檔案的內容,例如,只想看前面改變的 Food.java 的內容,可以用命令:
git diff src/com/example/shopping/Food.java
其中,減號表示刪除的部分,加號表示新新增的部分,可以看出,刪除了j變數,增加了k變數和一條print輸出語句。
6. git checkout
git checkout src/com/example/shopping/Food.java
:撤銷修改
- 只要程式碼還未提交,所有修改的內容都是可以撤銷的。執行了上述命令後,Food.java 檔案的一切修改都會被撤銷到上一次提交後的狀態。之後再用status命令檢視,可以看到當前專案中已經沒有任何可提交的狀態了。但是,
git checkout
只適用於還沒有執行過 add 命令的檔案,如果某個檔案已經被新增過了,就不能再撤銷其更改的內容。
7. git reset
git reset
:取消已被新增(add)的檔案
- 可以發現對 Food.java 執行 reset 命令,然後用 status 命令檢視,Food.java 重新變回了未新增狀態。因此,如果要撤銷已新增的檔案,可以先使用 reset 命令,再進行 checkout 命令。
git reset --hard commitedId
:回滾,回到歷史提交記錄中的某個版本,commitedId 是提交版本的id號
8. git log
git log
:檢視歷史提交資訊
- 若只想檢視其中一條記錄,可以在 git log 命令後面指定某條記錄的id,並加上 -1,表示只想看到一行記錄,例如只檢視第三條記錄:
git log f4fa045aa34164aa09ecc2d8f976cad8721b3215 -1
。 - 若想檢視這條記錄具體修改了什麼內容,可以再在命令後面加上 -p 引數:
git log f4fa045aa34164aa09ecc2d8f976cad8721b3215 -1 -p
9. git branch
git branch
:檢視當前的版本庫中有哪些分支
- 因為shopping專案還沒有建立過任何分支,所有當前只有一個 master 分支,也就是專案存放到倉庫中必有的一條主分支。
10. git branch dev
git branch dev
:建立分支- 在branch命令後面寫上要建立分支的名字,可以建立一個新的分支,例如,下面建立一個名為 dev 的分支,再用 branch 命令檢視所有分支情況:
其中,master 分支前面的 * 表示當前我們的程式碼是停留在 master 分支上的,也即是,當前我們是在 master 分支上開發專案的
11. git checkout dev
git checkout dev
:切換分支到剛剛新建的 dev 分支上
- 可以看到,已經把程式碼切換到 dev 分支上去了。其中,在 dev 分支上修改並提交的程式碼不會影響到 master 分支,同樣,在 master 分支上修改並提交的程式碼也不會影響到 dev 分支。
- 因此,如果在 dev 分支上修復了原來 master 上的一個bug,在 master 分支上這個bug依然是存在的,這時,將修改的程式碼一行行復制到 master 分支並不太好,此時,可以用 merge 命令來完成合並操作。
12. git merge dev
git merge dev:
合併程式碼git checkout master
git merge dev
使用這兩行命令,就可以將 dev 分支上修改並提交的內容合併到 master 分支上了。最後,當不再需要 dev 分支時,就可以將 dev 分支刪除掉了。
13. git branch -d dev
git branch -d dev
:刪除 dev 分支
14. git clone [遠端庫地址]
git clone https://gitee.com/zoucaoxin/spring.git
:將遠端庫 https://gitee.com/zoucaoxin/spring.git 地址上的程式碼下載到本地
15. git push origin master
git push origin master
:將本地修改的內容同步到遠端庫上去- 其中,origin 指定的是遠端庫的 git 地址,master 部分指定的是同步到哪一個分支上,這句命令就表示:將原生代碼同步到 https://gitee.com/zoucaoxin/spring.git 這個地址所在庫的 master 分支上去。如果要將修改的程式碼提交到另一個 dev2 分支上去,則可輸入命令:
git push origin dev2
。
16. git fetch origin master
git fetch origin master
:將遠端庫上的修改內容同步到本地- 執行 fecth 命令後,會將遠端庫上的程式碼同步到本地,但同步下來的程式碼並不會合併到任何分支上去,而是會存放到 origin/master 分支上,這時,可以再呼叫
git merge origin/master
命令將 origin/master 分支上的修改合併到主分支上去。
17. git pull origin master
git pull origin master
:從遠端庫上拉取最新程式碼併合併到本地- 這句命令相當於將 fetch 和 merge 命令合在一起執行。
18. git branch -r
git branch -r
:檢視遠端分支
19.git branch -m [原來的分支名] [想修改的分支名]
git branch -m [old_branch_name] [new_branch_name]
:修改本地分支名
20. git branch -r -d [遠端分支名]
git branch -r -d [origin/branch-name]
:刪除遠端分支- 如果要修改遠端分支的名字,可以先修改本地分支名,再刪除遠端分支,最後推送本地分支。
本地建立庫並提交到遠端庫上
本地建立庫並提交到遠端庫上步驟:
git init
:建立本地倉庫;git pull origin master
:合併程式碼;git add .
:將檔案新增到倉庫中去;git commit -m "提交資訊"
:將檔案從暫存區提交到倉庫;git push -u origin master
:第一次提交到遠端庫時要加 -u ,以後再往遠端庫提交時,直接使用命令:git push origin master
即可。一些問題:
1
多半是遠端庫中的README.md檔案沒有新增到本地庫中,通過命令 git pull –rebase origin master 合併到遠端庫中的README.md檔案;
2.
Windows中的換行符為CRLF,而在Linux下的換行符為LF,所以在執行 add . 時出現如上提示,通過命令 git config –global core autocrlf false (禁用自動轉換)可解決;