Git命令

基本命令

git clean -f 刪除未被跟蹤的文件
git clean -df 刪除未被跟蹤的文件和文件夾

差異對比

git log -p 命令來顯示每一次提交與其父節點提交內容之間快照的差異
git log -p ./src/filepath/a.c 命令來顯示指定文件每一次提交與其父節點提交內容之間快照的差異
git diff 查看工作目錄中某個還未載入(stage)的文件的差異
git diff --stage 查看載入(staged)而並未提交(not committed)的內容差異
git diff HEAD 查看最後一次提交之後工作目錄中文件的變更
git diff v1.6.0 -- README 查看創建v1.6這個標籤之後README文件所發生的修改
git diff v1.0 v1.1 兩個版本之間比對
git diff --stat v1.6.1.1 v1.6.1.2 顯示所有文件統計差異
git diff --stat v1.6.1.1 v1.6.1.2 ./src/filepath/a.c 顯示指定文件統計差異
git diff v1.6.1.1 v1.6.1.2 顯示所有文件詳細差異
git diff v1.6.1.1 v1.6.1.2 ./src/filepath/a.c 顯示指定文件詳細差異

查看變更歷史

git log 查看所有文件變更歷史
git log ./src/filepath/a.c 查看對指定文件的變更歷史


還原代碼

git revert HEAD 撤銷前一次 commit
git revert HEAD^ 撤銷前前一次 commit
git revert commit_id 撤銷指定的版本,撤銷也會作爲一次提交進行保存
git push origin master 將還原更改提交到遠程分支上

git revert是提交一個新的版本,將需要revert的版本的內容再反向修改回去,
版本會遞增,不影響之前提交的內容


遠程分支

遠程分支查看

git remote -v 查看遠程分支

添加遠程分支

git remote add origin https://gitee.com/lvxinliang/CPPTest.git

推送本地分支到遠程分支並設置分支上游

git push -u origin master 初次提交本地分支,將本地的master分支推送到origin主機,同時設置 master 的 git pull/status 的上游,後面就可以不加任何參數使用git push
git push --set-upstream origin master 效果同上,上面是縮寫

推送本地分支到遠程分支

git push origin master 將本地分支推送到遠程的同名分支上

拉取遠程分支並創建本地分支

git checkout -b dev origin/dev 在本地新建dev,並自動切換到該本地分支且設置分支上游


Tag操作

創建Tag

git tag v1.0 當前分支創建一個名爲v1.0的tag

列出所有Tag

git tag

刪除Tag

git tag -d v0.1

推送本地Tag到遠程

git push origin v1.0

一次性推送全部尚未推送到遠程的本地標籤

git push origin --tags

刪除遠程Tag

git tag -d v0.9 要刪除遠程標籤就麻煩一點,先從本地刪除
git push origin :refs/tags/v0.9 然後,從遠程刪除。刪除命令也是push


代碼合併

合併單個commit

git cherry-pick 6bbf6b4 #6bbf6b4爲dev01上的commitId 將dev01上功能A對應代碼cherry-pick到dev02上

常用配置

[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
    last = log -1
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    d = difftool
[diff]
    tool = vimdiff
[difftool]
    prompt = false
[user]
    email = user@163.com
    name = user
[color]
    ui = auto
[push]
    default = simple

差別

git revert 和 git reset的區別

  1. git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
  2. 在回滾這一操作上看,效果差不多。但是在日後繼續merge以前的老版本時有區別。因爲git revert是用一次逆向的commit“中和”之前的提交,因此日後合併老的branch時,導致這部分改變不會再次出現,但是git reset是之間把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應該還會被引入。
  3. git reset 是把HEAD向後移動了一下,而git revert是HEAD繼續前進,只是新的commit的內容和要revert的內容正好相反,能夠抵消要被revert的內容。

Refs:

Git push與pull的默認行爲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章