git 使用方法 (reset merge rebase stash diff等)


基本功能:
git clone:克隆倉庫
git pull:從遠程倉庫拉取代碼到本地
 
git stash:將修改后的代碼存儲到本地(一個棧結構)
git stash pop:將你stash到本地的代碼與重新git pull下的代碼合並
 
git add XXX:將XXX文件加入到暫存區
git commit -m "注釋":將暫存區的文件提交到本地倉庫
git push:將本地倉庫的內容推送到遠程倉庫
 
git checkout:切換分支或恢復工作樹文件
 
-d:刪除
-D:強制刪除
刪除本地分支:
git branch -D 分支名
刪除遠程分支:
git push origin --delete 分支名
 
獲取新分支的代碼
git checkout -b dev_etf_m3(本地名稱) origin/dev_etf_m3(遠程名稱)
 
 
將diff.txt導入
git apply --reject diff.txt
 

log相關

查看當前分支圖形化的commit歷史(oneline 一條提交信息用一行展示)

git log --oneline --graph

顯示當前分支的創建來源分支

git reflog show branchname

 

git diff 相關

只列出文件名不列出詳細信息:

git diff --name-only

只列出文件名和增加、刪除、修改等:

git diff --name-status

git diff 排除指定目錄,如排除toolchain

git diff ':!toolchain'

 

獲取commit ID

git rev-parse HEAD # 獲取完整的commit id

 git rev-parse --short HEAD # 獲取短commit id

 

本地分支 push 到遠程並追蹤

git push --set-upstream origin branch_name

 
本地分支追蹤遠程分支
git branch --set-upstream dev_etf_m3(本地名稱) origin/dev_etf_m3(遠程名稱)
git branch --set-upstream-to=origin/dev_etf_m3(遠程名稱) dev_etf_m3(本地名稱)
 
git 標簽tag 
git tag tagname           添加標簽名為tagname的標簽
git tag -a tagname -m "commit"       添加標簽並加注釋
git checkout tagname               切換到tagname標簽
git tag -d tagname                        刪除標簽
git push origin tagname                    提交標簽到倉庫
 
git中名詞含義
HEAD:大多數時候HEAD指向分支中最新提交。
master:git在首次創建repo時創建的默認分支的名稱。在大多數情況下,“主”意味着“主要分支”。
origin:git為主遠程倉庫提供的默認名稱。
 
例子:git reset --soft HEAD^
HEAD^的意思是上一個版本,也可以寫成HEAD~1;
如果進行兩次commit都想撤回,使用HEAD~2;
 
 
本地分支推送到遠程
git checkout -b feature-branch //創建並切換到分支feature-branch  
git push origin feature-branch:feature-branch //推送本地的feature-branch(冒號前面的)分支到遠程origin的feature-branch(冒號后面的)分支(沒有會自動創建)
 
 
rebase使用具體流程(作用是解決分叉)
git clone master branch
git checkout -b local
(在本地分支上開發和測試)
git checkout master
git pull
git checkout local
git rebase -i HEAD~2 //合並提交 2表示合並兩個
git rebase master  ----->解決沖突 ----->git rebase --contine
git checkout master
git merge local
git push
 
 
merge合並代碼流程:
1、切換到merge的分支
git checkout dev_ht_etf
2、把代碼拉下來
git pull
3、切換回原來的分支
git checkout dev_ht_etf_niemao
4、將原分支有的改動,則提交
git status
5、將要merge的分支merge過來
git merge dev_ht_etf
6、有沖突的需要解決沖突
git status
vi ETFRiskCtrl/PosHandler.hpp
7、將解決了沖突的文件再次提交一下
git status
git add ETFRiskCtrl/PosHandler.hpp
git commit -m "merge codes from dev_ht_etf -> dev_ht_etf_niemao"
8、push
 
 
stash使用方法:
 git stash:將修改存儲到stash中(本地)
 git stash list:查看所有的stash
 git stash pop:彈出最新的那個stash
 git stash apply stash@{x}
 git stash drop stash@{x}
 git stash clear
 
 
 
  reset的使用方法
reset:commit之后想撤銷commit
--mixed:不刪除工作空間代碼,撤銷commit,並且撤銷git add。為默認參數, git reset --mixed HEAD^ 和 git reset HEAD^是一樣的。
--soft:不刪除工作空間代碼, 撤銷commit,不撤銷git add。
--hard:刪除工作空間代碼,撤銷commit,撤銷git add。操作完成后,就恢復上一次commit的狀態。
如果只是修改commit注釋:git commit --amend
 
 
對比兩個分支的差異的方法
1、顯示出branch1 branch2中差異部分
git diff branch1 branch2 --stat
2、顯示指定文件的詳細差異
git diff branch1 branch2 具體文件路徑
3、顯示出所有有差異的文件的詳細差異
git diff branch1 branch2
4、查看branch1 分支有,而branch2中沒有的log
git log branch1 ^branch2
5、查看branch2中比branch1中多提交了哪些內容
git log branch1..branch2
6、不知到誰提交的多,誰提交的少,單純想知道有什么不一樣
git log branch1...branch2
7、在上述情況下,在顯示出每個提交是在哪個分支上
git log --left-right branch1...branch2
注意:commit后面的箭頭,根據我們在--left-right branch1...branch2的順序,左箭頭<表示是branch1,右箭頭>表示是branch2的。
 
 

本地撤銷commit

1、git reset --soft|--mixed | --hard <commit_id>
2、git push develop develop --force (本地和遠程分支都是develop)
 
遠程倉庫合並commit

1、git log

找到和合並commit的分支

2、git rebase -i <commit_id>

執行rebase后,會彈出窗口

pick 3ca6ec3   '注釋**********'
 
pick 1b40566   '注釋*********'
 
pick 53f244a   '注釋**********'

將除了第一個的pick,其他都改為 s 或 squash

pick 3ca6ec3   '注釋**********'
 
s 1b40566   '注釋*********'
 
s 53f244a   '注釋**********'

修改后保存退出,這時 git log 一下,發現提交已經合並

3、 git push -f 

到這里以后,  git status  后會看到,提示讓你git pull一下,千萬不要這樣做!否則你會發現這三條白合並了,還平白多了兩條commit

這時候,需要強制push上去  git push -f , 當然要確保強制push不會覆蓋了別人的代碼,如果這個分支只有你維護那就可以為所欲為了

到此,合並多個遠程分支成功~

 

 

 

資料:

https://www.jianshu.com/p/f7ed3dd0d2d8

https://www.cnblogs.com/qianqiannian/p/6008140.html

https://www.cnblogs.com/cristiano-duan/p/12682038.html

https://blog.csdn.net/default7/article/details/100515595

撤銷本地commit:https://www.cnblogs.com/wuyun-blog/p/10026363.html

合並遠程倉庫commit:https://blog.csdn.net/qq_21744873/article/details/82629343 

https://www.cnblogs.com/xiaojianliu/p/12618921.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM