Git基本操做


# 1.基本操做git


git status 查看狀態緩存

git branch -r 查看全部分支app

git branch -D 分支名 刪除本地分支ssh

git branch --track BR_Veative origin/BR_Veative 追蹤origin分支BR_Veative並在本地創建分支BR_Veative
git checkout -b BR_Veative origin/BR_Veative 追蹤origin分支BR_Veative並在本地創建分支BR_Veative編輯器

git branch BR_Veative 創建分支fetch

git checkout BR_Veative 切換分支.net

git pull --rebase pull一下日誌

git diff <file>查看修改
若是<file>中間有空格,須要在<file>兩邊加「」blog

git checkout -- <file> 放棄這次修改ip

git stash 剛修改文件臨時緩存起來,而後pull代碼時不會報錯

git stash pop 接上一條命令,當pull結束後再講修改pop出來,進行add等後續操做

git add -A/<file> 添加全部文件/file

git commit -s -m "description" commit

git push origin head:refs/for/<分支名稱> push到分支

git remote -v //查看遠程信息

 

# 2.基於Gerrit的Push方法

commit 或者push以前先pull一下

在本地將修改合併到主分支:
1)如今本地切換到主分支master
2)git fetch ssh://..........
3) git push origin head:refs/for/master


# 3.一個完整的提交循環
## 3.1 git status 查看更改添加文件狀態
1)git checkout -- <file> 放棄不須要修改的文件
2)對於untracked files若是須要則下一步中添加提交,不須要則後續處理

## 3.2 git add <files>
1) git add <file> 添加單個文件
2)git add *.unity 只添加某一類型的文件,如.unity文件
3)git add --a 添加全部文件

## 3.3 git commit -s -m"信息" 提交以及相關信息
1) git log 可查看提交信息 Q退出
2)git --amend 修改commit的信息,並按esc而後按shift+z(兩次)退出
3)git reset --hard <commit id> 對於不須要提交的文件如生成的untracked files能夠最後統一commit,
經過reset --hard強制會退到上一次commit(<commit id>)位置,來放棄不須要的文件

## 3.4 git pull --rebase 將遠程分支代碼拉下來合併到本地

## 3.5 git push orgin head:refs/for/分支名 將合併後的本地分支提交到遠程

**若是須要本地合併到其餘主分支**
## 3.6 git checkout master 切換到主分支

## 3.7 git pull --rebase 將遠程主分支合併到本地

## 3.8 git cherry-pick <commin id> 將本地分支提交的commit合併到主分支
1) git fetch ss://.... 此步驟也能夠根據gerrit提交記錄選擇cherry-pick的連接來實現

## 3.9 git push origin head:refs/for/master

## 3.10 切換到工做分支


# 4.一修改本次commit或者push
1)git log 查看日誌
2)git reset <commit id> 返回上一次提交(此時git status 機會看到commit的文件又從新出現)
3)把不須要的文件checkout掉或者新加的add一下
4)git reset <commit id> 返回本次提交(git status能夠看到放棄提交的文件,(並能夠用git add))
5)git commit --amend
6) 若是須要push

# 5.pull --rebase conflict
在rebase的過程當中,有時也會有conflict,這時Git會中止rebase並讓用戶去解決衝突,解決完衝突後,用git add命令去更新這些內容,
而後不用執行git-commit,直接執行git rebase --continue,這樣git會繼續apply餘下的補丁。
在任什麼時候候,均可以用git rebase --abort參數來終止rebase的行動,而且mywork分支會回到rebase開始前的狀態。

**解決衝突:**
1)對於文本代碼,能夠在vs中直接看到錯誤的地方,直接修改便可
2)對於jar包或者場景文件則,git status看到衝突的包(unmergerd paths),而後git reset(checkout)後就能夠git rebase --continue
而後修改衝突文件,git commit --amend一下


# 6.push [remote reject] head->refs/for/(分支名)(change XXXX closed)
1)gerrit上輸入上述提示中的XXXX,查找到與xxxx相關的已經合併
2)git status查看發現本地比遠程多5個commit,而gerrit上顯示4個commit沒有合併,這是由於本地多出來一個commit(未知緣由)與以前已經合併
的commit徹底一致,因此提示已經closed。相似問題不少,好比若是的你的本次提交的依賴在gerrit上abandoned也會出現此問題,解決方法以下:
3)先把本地修改commit一下,記錄commit id,git reset --hard到出問題的commit前一次commit,而後把gerrit上的patch依次cherry-pick下來,而後把本地的commit也
cherry-pick下來
4)push便可

# 7.push [remote reject] head->refs/for/(分支名)(no changes made)
1)伴隨warning:No changes between prior commit xx and new commit xx,通常發生在cherry-pick後在提交,正常兩個commit
id相同則至關於更新commit;若是commit id不一樣而兩次提交內容又相同,則會報上述問題,在gerrit上隨便修改一下commit message更新一下patch則能夠繼續提交


# 8.missing Change-ID in commit...
1)Change-ID爲gerrit生成的
2)解決方法:

**第一種:**
1)運行錯誤提示gitdir=$(git rev-parse --git-dir);scp-p -P 29418...
2)git commit commit --amend 退出便可生成Change-ID,便可提交
3)此方法使用與最新的commit丟失Change-ID的狀況
**第二種**:
1)若是不是最新的一次commit丟失ID則
2)git reset回退到丟失ID的commit
3)git commit --amend 後續同第一種方法
**第三種:**
1)適用於丟失Change-ID的commit距離最新的commit較遠
2)git log 找到丟失ID的commit:如xxxxxx
3)git rebase -i commitid(爲丟失change-id的commit的上一條commit) 打開默認編輯器
4)將缺失了Change-Id的commit前面的"pick"改成"reword"便可,保存退出,git會逐個打開被你標註了reword的提交日誌頁面,而後保存退出
5)gitlog查看change-id已經存在

方法來源:https://blog.csdn.net/u012843873/article/details/82424514


# 9.丟失Signed-off-by
git commit --amend -s


# 10.修改commit msggit commit -"msg" --amend

相關文章
相關標籤/搜索