標籤:

Git操作小記

本博客採用創作共用版權協議, 要求署名、非商業用途和保持一致. 轉載本博客文章必須也遵循 署名-非商業用途-保持一致的創作共用協議.

Git操作清單

持續更新…

提交和刪除

# 使用一次新的commit,替代上一次提交# 如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息$ git commit --amend -m [message]# 重做上一次commit,並包括指定文件的新變化$ git commit --amend ...# 刪除暫存文件, 不刪除本地$ git rm --cached filename# 本地的dev分支推送的遠程dev分支(遠程沒有則創建)$ git push origin dev:dev # 從遠程倉庫抓取所有本地沒有的內容$ git fetch origin# 推送, 本地的修改推送到遠程remote中的branch分支上$ git push (remote) (branch)# 選擇一個commit,合併進當前分支$ git cherry-pick [commit]

分支

# 創建並切換分支$ git checkout -b dev# 合併分支$ git merge dev# 刪除分支$ git branch -d dev# 刪除遠程分支$ git push origin --delete <branchName># 查看各分支及追蹤的遠程分支$ git branch -vv# 強行刪除未合併的分支$ git branch -D feature-vulcan# 查看詳細的遠程倉庫信息$ git remote show (remote-name)# 創建並切換分支, 並與遠程分支關聯, 作用是git pull的時候會從遠程remotename/branch分支拉取數據$ git checkout -b [branch] [remotename]/[branch]# 改變當前本地倉庫追蹤的遠程分支$ git branch -u origin/serverfix# 刪除遠程名為serverfix分支$ git push origin --delete serverfix# 新建一個分支,與指定的遠程分支建立追蹤關係$ git branch --track [branch] [remote-branch]# 建立追蹤關係,在現有分支與指定的遠程分支之間$ git branch --set-upstream [branch] [remote-branch]# 重命令遠程分支(devel 分支重命名為 develop 分支)# 1. 刪除遠程分支$ git push --delete origin devel# 2. 重命名本地峰值$ git branch -m devel develop# 3. 推送本地分支$ git push origin develop

  • git 分支
  • Git 分支 - 遠程分支
  • 查看信息

    # 查看分支合併狀況$ git log--graph --pretty=oneline --abbrev-commit# 查看提交記錄, 並能看到文件的修改$ git log--stat# 顯示指定文件相關的每一次diff$ git log-p [file]# 顯示指定文件是什麼人在什麼時間修改過$ git blame [file]# 顯示暫存區和工作區的差異$ git diff# 顯示暫存區和上一個commit的差異$ git diff --cached []# 顯示工作區與當前分支最新commit之間的差異$ git diff HEAD# 顯示兩次提交之間的差異$ git diff [first-branch]...[second-branch]

    標籤

    # 新建一個tag在當前commit$ git tag[tag]# 新建一個tag在指定commit$ git tag[tag] [commit]# 提交指定tag$ git push [remote] [tag]# 提交所有tag$ git push [remote] --tags# 新建一個分支,指向某個tag$ git checkout -b[branch] [tag]# 刪除遠程標籤$ git push origin --deletetag<tagname># 獲取遠程的tag$ git fetch origin tag<tagname>

    撤銷

    # 版本回退 只需要添加commit版本號的前幾位git reset--hard 3628164# 恢復暫存區的指定文件到工作區$ git checkout [file]# 恢復某個commit的指定文件到工作區$ git checkout [commit] [file]# 恢復上一個commit的所有文件到工作區$ git checkout .# 對某個文件進行版本回退$ git resetcommit號 filename# 重置暫存區的指定文件,與上一次commit保持一致,但工作區不變$ git reset[file]# 重置暫存區與工作區,與上一次commit保持一致$ git reset--hard# 重置當前分支的指針為指定commit,同時重置暫存區,但工作區不變$ git reset[commit]# 重置當前分支的HEAD為指定commit,同時重置暫存區和工作區,與指定commit一致$ git reset--hard [commit]# 重置當前HEAD為指定commit,但保持暫存區和工作區不變$ git reset--keep [commit]# 新建一個commit,用來撤銷指定commit# 後者的所有變化都將被前者抵消,並且應用到當前分支$ git revert [commit]

  • git如何刪除遠程倉庫的某次錯誤提交
  • 保持主分支同步更新

    多人協作時, 首先fork後自己倉庫, 然後clone到本地, 創建自己的分支

    # fork該倉庫git@github.com:tornadoweb/tornado.git$ git clone git@github.com:Dinosaurliu/tornado.git# 創建並切換到開發分支$ git checkout -b dev

    持續在dev分支開發新功能, 當在分支開發功能時可能原倉庫推送了新的功能, 需要更新master主分支

    # 切換到master主分支$ git checkout master# 增加新的遠程倉庫, 命名為upstream$ git remote add upstream git@github.com:tornadoweb/tornado.git# 查看當前的遠程倉庫$ git remote -v# 同步遠程倉庫的更新, 拉取upstream對應的遠程倉庫的更新, 並解決衝突, 注意fetch後會存儲在upstream/master本地分支$ git fetch upstream# git查找upstream對應伺服器, 從中抓取本地沒有的數據,並且更新本地資料庫,移動 origin/master 指針指向新的、更新後的位置。# 合併遠程master分支$ git merge upstream/master# 將最新的origin/master合併到本地master分支上

    參考鏈接

  • Fork A Repo
  • Syncing a fork
  • 推薦閱讀:

    蒲居小記
    小記——夢幻成真
    [子平學記]《子平玄珠》小記
    練功小記53
    松筋正骨培訓小記(七)

    TAG:小記 |