1. 程式人生 > 實用技巧 >git常用命令總結

git常用命令總結

初始配置Git

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

本地分支回滾版本

檢視版本

git log
git reflog

回滾

git reset --hard HEAD^
git reset --hard 55275

檢視檔案區別

git diff test.txt

撤銷修改

將檔案恢復到最近一次add 或 commit之前的狀態

git checkout -- test.txt

  • 把暫存區的修改撤銷掉
git reset HEAD test.txt
git restore --staged test.txt

本地關聯到遠端倉庫:

git remote add origin [email protected]:whalefall541/test.git
# 遠端倉庫地址 遠端分支名:本地分支名
git pull [email protected]:whalefall541/test.git master:master 
git push -u origin master

刪除遠端倉庫關聯

git remote rm origin

建立並切換到本地分支 -- 理想情況主分支沒變化

git checkout -b dev     # 開發完成之後,
git checkout master     # 切換到master分支
git merge dev           # 移動master指標到dev位置
git branch -d dev       # 刪除分支

CONFLICT (content): Merge conflict in test3.txt

手動修復檔案

  • >>>>> HEAD
  • aaaa
  • =====
  • bbbb
  • <<< DEV

關閉自動合併
git merge --no-ff -m "merge with no-ff" dev

臨時在dev開發,突然要建立FixBug去修復master分支上的bug

儲存add的內容

git add test5.txt
git stash

建立修復分支

git checkout -b fixbug
vim test4.txt
git add test4.txt
git commit -m " fix bug in test4.txt"

合併修復的內容到master,並且刪除fixbug分支

git checkout master
git merge fixbug
git branch -d fixbug

回到當前開發分支dev

git checkout dev
git stash list 
git stash pop # 恢復暫存在stash中的內容
vim test5.txt
git add test5.txt
git commit -m "add test5.txt"

切回master合併dev內容

git checkout master
git merge dev
git branch -d dev
git push

在多人使用遠端倉庫進行工作時,往往在同一個分支上的操作會存在衝突,此時需要遠端衝突合併。

  • 多人協作的工作模式通常是這樣:
  • 首先,可以試圖用git push origin 推送自己的修改;
  • 如果推送失敗,則因為遠端分支比你的本地更新,需要先用git pull試圖合併;
  • 如果合併有衝突,則解決衝突,並在本地提交;
  • 沒有衝突或者解決掉衝突後,再用git push origin 推送就能成功!
  • 如果git pull提示no tracking information,則說明本地分支和遠端分支的連結關係沒有建立,用命令git branch --set-upstream-to origin
    /

標籤

在當前分支當前提交上打標籤:
git tag v1.0

如果想要打標籤在某個指定歷史commit上:
git tag v0.9 f52c633

可以通過如下命令檢視一個tag資訊:
git show v0.1

如果標籤打錯了,也可以刪除:
git tag -d v0.1

如果要推送某個標籤到遠端,使用命令git push origin

git push origin v1.0
# 或者,一次性推送全部尚未推送到遠端的本地標籤:
git push origin --tags	
# 如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,先從本地刪除:
git tag -d v0.9	
# 然後,從遠端刪除。刪除命令也是push,但是格式如下:
git push origin :refs/tags/v0.9

.gitignore

.gitignore只能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。

解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push