git問題匯總

git merge會出現(xiàn)的問題

git revert
Git會抱怨:
is a merge but no -m option was given
這是因?yàn)槟鉹evert的那個commit是一個merge commit,它有兩個parent, Git不知道base是選哪個parent,就沒法diff,所以就抱怨了,所以你要顯示告訴Git用哪一個parent。
git revert sidsad8 -m 1
這樣就選parent 1,那么parent 1又是哪一個呢?
參數(shù) -m 就是指定要撤銷的那個提交,從左往右,從1開始數(shù)

撤銷修改的幾個場景

*. 場景1:當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令git checkout -- file。
*. 場景2:當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
*. 場景3:已經(jīng)提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節(jié),不過前提是沒有推送到遠(yuǎn)程庫。

工作區(qū)、暫存區(qū)、本地倉庫

關(guān)于工作區(qū)、暫存區(qū)、本地倉庫的說明,可查看使用原理視角看 Git

撤銷修改的幾個場景

*. 場景1:當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令git checkout -- file。
*. 場景2:當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
*. 場景3:已經(jīng)提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節(jié),不過前提是沒有推送到遠(yuǎn)程庫。

添加遠(yuǎn)程倉庫

  1. 要關(guān)聯(lián)一個遠(yuǎn)程庫,使用命令git remote add origin git@server-name:path/repo-name.git
  2. 關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容;
    把本地庫的內(nèi)容推送到遠(yuǎn)程,用git push命令,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程。
    由于遠(yuǎn)程庫是空的,我們第一次推送master分支時,加上了-u參數(shù),Git不但會把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時就可以簡化命令。
  3. 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
  4. 遠(yuǎn)程分支克?。篻it clone

remote origin already exists.

將本地倉庫關(guān)聯(lián)到遠(yuǎn)程倉庫上
git remote add origin https://github.com/LeventZheng/angular2_practice.git
如果出現(xiàn)錯誤提示:fatal: remote origin already exists.
git remote rm origin
然后再執(zhí)行命令,就不會報錯了

解決沖突

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

前面的是工作區(qū)的代碼,后面是倉庫代碼

分支策略

*. master分支應(yīng)該是非常穩(wěn)定的,也就是僅用來發(fā)布新版本,平時不能在上面干活;
*. dev分支是不穩(wěn)定的,到某個時候,比如1.0版本發(fā)布時,再把dev分支合并到master上,在master分支發(fā)布1.0版本;
*. 你和你的小伙伴們每個人都在dev分支上干活,每個人都有自己的分支,時不時地往dev分支上合并就可以了。
所以,團(tuán)隊(duì)合作的分支看起來就像這樣:

image.png

不是每個分支都要推送到遠(yuǎn)程分支

  1. bug分支只用于在本地修復(fù)bug,就沒必要推到遠(yuǎn)程了;
  2. feature分支是否推到遠(yuǎn)程,取決于你是否和你的小伙伴合作在上面開發(fā)。

多人協(xié)作的工作模式

  1. 首先,可以試圖用git push origin branch-name推送自己的修改;
  2. 如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull試圖合并;
  3. 如果合并有沖突,則解決沖突,并在本地提交;
  4. 沒有沖突或者解決掉沖突后,再用git push origin branch-name推送就能成功!
    如果git pull提示“no tracking information”,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream branch-name origin/branch-name。

還可以通過-s用私鑰簽名一個標(biāo)簽,

git tag -s v0.2 -m "signed version 0.2 released" fec145a

簽名采用PGP簽名,因此,必須首先安裝gpg(GnuPG),如果沒有找到gpg,或者沒有g(shù)pg密鑰對,就會報錯,如果報錯,請參考GnuPG幫助文檔配置Key。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容