基本功能:
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
git rev-parse --short HEAD
本地分支 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