git命令簡單使用
- 1. 將代碼下載到到本地
- 2. 查看分支是否正確
- 3. 將工作目錄中的變更添加到暫存區,為下一次提交做準備
- 4. 提交更改,添加提交信息
- 5. 將本地的提交推送到遠程倉庫
- 6.從遠端倉庫拉取分支代碼
- 7.查看修改日志
- 8. 解決沖突
1. 將代碼下載到到本地
git clone的基本作用是從遠程倉庫克隆一個副本到本地。
#克隆遠程倉庫到當前目錄(自動創建項目文件夾)
git clone https://github.com/user/repo.git#克隆特定分支(--branch 或 -b)
git clone -b release https://github.com/user/repo.git#淺克隆(僅最新提交歷史)
git clone --depth 1 https://github.com/user/repo.git#克隆單一分支(節省空間)
git clone --single-branch -b release https://github.com/user/repo.git
舉例:
git clone --depth 1 -b release https://github.com/user/repo.git
2. 查看分支是否正確
git branch
3. 將工作目錄中的變更添加到暫存區,為下一次提交做準備
git add
# 添加單個文件
git add README.md# 添加多個文件(支持通配符)
git add *.c *.h# 添加整個目錄(遞歸添加)
git add src/# 添加所有變更(包括新建、修改,但不包括刪除)
git add .# 添加所有變更(包括新建、修改和刪除)
git add -A
4. 提交更改,添加提交信息
基礎提交操作
# 標準提交(需先git add)
git commit -m "修復登錄驗證邏輯"# 自動暫存所有已跟蹤文件的修改并提交
git commit -a -m "優化數據庫連接池配置"# 修改最近一次提交(修正拼寫/添加文件)
git commit --amend# 提交文件
git commit -F 1.txt
5. 將本地的提交推送到遠程倉庫
# 推送到默認上游分支(需提前設置跟蹤)
git push# 明確指定遠程倉庫和分支
git push origin main# 推送本地分支到遠程同名分支(自動創建)
git push origin feature/login# 強制覆蓋遠程分支(謹慎使用)
git push --force-with-lease origin main
舉例:
git push --force-with-lease origin release
正常情況下,如果這個過程沒有其他人提交代碼,就會正常推送到遠端倉庫。
6.從遠端倉庫拉取分支代碼
# 從默認上游分支拉取并合并(等效于 fetch + merge)
git pull# 明確指定遠程倉庫和分支
git pull origin develop# 拉取并自動變基(避免合并提交)
git pull --rebase origin main# 拉取所有遠程分支更新
git pull --all
舉例(都是自己經常使用):
git pull --rebase --force-with-lease origin release
7.查看修改日志
# 基礎歷史查看(帶完整信息)
git log#顯示當前分支比遠程發布分支多出的提交(即本地尚未合并到該遠程分支的修改)
git log release..HEAD
會列出在遠程分支release-..之后到當前本地 HEAD 之間的提交。
8. 解決沖突
首先,當我執行git push的時候,如果遠程倉庫已經有了我本地沒有的新提交,git會拒絕我的推送,并提示需要先拉取最新的變更。這時候,我需要先將遠程的更新合并到本地,解決可能的沖突之后,再重新推送。
那具體應該怎么做呢?可能有兩種方法:一種是使用git pull,另一種是先git fetch然后合并或者變基。讓我理清這兩種方法的區別。git pull實際上是git fetch加上git merge的快捷方式,而如果使用git fetch之后手動合并或者變基,可以更靈活地控制合并過程。
假設我選擇使用git pull,這時候git會自動合并遠程的修改和本地的提交。如果有沖突的話,git會提示我解決沖突,然后提交合并后的結果。之后,我就可以再次嘗試推送了。不過,自動合并可能會產生一個合并提交,有些人可能更傾向于保持線性的提交歷史,這時候可能需要使用git pull --rebase,這樣可以將我的本地提交變基到遠程分支的最新提交之上,避免額外的合并提交。
不過,在使用rebase的時候需要注意,如果我已經將本地提交推送到遠程過,那么變基可能會改變提交歷史,導致后續推送出現問題。不過在這個場景中,因為我還沒有成功推送過,所以使用rebase應該是安全的。
接下來,我應該按照以下步驟操作:
- 先執行git pull --rebase origin 分支名,這樣可以將遠程的更改拉取下來,并將我的本地提交應用到這些更改之后。
- 如果在rebase過程中出現沖突,需要手動解決沖突,然后使用git add 文件名來標記沖突已解決,接著執行git rebase --continue繼續變基過程。
- 完成rebase之后,再次執行git push,這時候應該就能成功推送到遠程倉庫了。