推薦git學(xué)習(xí)工具
文檔:https://git-scm.com/book/zh/v2
練習(xí)網(wǎng)站:https://learngitbranching.js.org/
拉取分支代碼
git clone -b <branch name> <reposity url>
clone后,idea中代碼分支和Aone中分支同屬
放入緩存
git stash
git stash? pop
git commit -a -m " "
推送更新
git push origin HEAD
拉取更新
git pull? ?(會(huì)產(chǎn)生merge記錄)
git pull -r (推薦)
拉取后如果有沖突先去除沖突
去除后再次編譯運(yùn)行,如果沒問題再將本地添加和修改推送。
如果不編譯運(yùn)行,可能add或commit會(huì)和拉取后的文件之間編譯運(yùn)行錯(cuò)誤
查看提交日志
git log
回滾某次提交
git revert <提交記錄>
有提交記錄,可重復(fù)revert
查看某一提交記錄下具體更改
git show <85810125844049756cb20b110b07336e605e258a>
切換到遠(yuǎn)程新分支
查看遠(yuǎn)程分支
git branch -a
拉取遠(yuǎn)程分支
git pull -r
如果有修改先git stash,然后
git checkout <遠(yuǎn)程分支名:feature/*****>
把緩存釋放
git stash pop
把之前branch1分支提交的commit都【復(fù)制】過來
git checkout < 要提交的分支名>
git cherry-pick <提交記錄名>
合并master
git merge origin/master --no-ff
解決沖突
git add -u
然后 git commit? (不需加注釋,會(huì)自動(dòng)出現(xiàn)合并主干注釋文件)
然后git push origin HEAD
文件對(duì)比
git diff? filepath 工作區(qū)與暫存區(qū)比較
git diff HEAD filepath 工作區(qū)與HEAD ( 當(dāng)前工作分支) 比較
git diff --staged 或 --cached? filepath 暫存區(qū)與HEAD比較
git diff branchName filepath? 當(dāng)前分支的文件與branchName 分支的文件進(jìn)行比較
git diff commitId filepath 與某一次提交進(jìn)行比較
git commit ammend 修改已經(jīng)提交的注釋
切換協(xié)議
1. 查看當(dāng)前remote
git remote -v
2. 切換到http:
git remote set-url origin https://github.com/username/repository.git
3. 切換到ssh:
git remote set-url git@github.com:username/repository.git? (暫不確定是不是需要加origin)
git pull 和??git pull --rebas區(qū)別
1.git pull
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase =? git fetch + git rebase FETCH_HEAD
2.merge 和 rebase
現(xiàn)在我們有這樣的兩個(gè)分支,test和master,提交如下:
? ? ? D---E test
? ? ? /
A---B---C---F--- master
在master執(zhí)行g(shù)it merge test,然后會(huì)得到如下結(jié)果:
? ? ? D--------E
? ? ? /? ? ? ? ? \
A---B---C---F----G---? test, master
在master執(zhí)行g(shù)it rebase test,然后得到如下結(jié)果:
A---B---D---E---C‘---F‘---? test, master
merge操作會(huì)生成一個(gè)新的節(jié)點(diǎn),之前的提交分開顯示。
而rebase操作不會(huì)生成新的節(jié)點(diǎn),是將兩個(gè)分支融合成一個(gè)線性的提交。
3.rebase好處
想要更好的提交樹,使用rebase操作會(huì)更好一點(diǎn)。
這樣可以線性的看到每一次提交,并且沒有增加提交節(jié)點(diǎn)。
merge 操作遇到?jīng)_突的時(shí)候,當(dāng)前merge不能繼續(xù)進(jìn)行下去。手動(dòng)修改沖突內(nèi)容后,add 修改,commit 就可以了。
而rebase 操作的話,會(huì)中斷rebase,同時(shí)會(huì)提示去解決沖突。
解決沖突后,將修改add后執(zhí)行g(shù)it rebase –continue繼續(xù)操作,或者git rebase –skip忽略沖突。