git使用中碰到的問題,持續更新

1、git刪除遠程分支

git push origin :branch-name //origin前面必須有空格,表示push一個空分支到遠程分支,即可刪除遠程分支。注意:這個操作需要擁有force push的權限

2、清空git暫存區

git reset HEAD  //可以清空之前git add 的內容

3、從windows上面上傳項目到git服務器時出現問題:提示換行符不一致

後來發現問題是因爲把項目文件是在Linux系統上解壓的,然後在拷貝到windows系統上,通過git add命令就會出現該問題,因爲git系統在git add文件時會自動去修改某些格式,解決辦法是要在windows上面解壓文件,然後再git add

4、查看遠程分支命令

git branch --all

5、error: The following untracked working tree files would be overwritten by merge:
        mydroid/.repo/manifests/RLS_6AM.1.0.xml
Please move or remove them before you can merge

出現這個提示的時候不能切換分支,使用參數-f 強制切換:git checkout -f branch-name

 

6、Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)


        modified:   mydroid/build (modified content)
        modified:   mydroid/device/ti/jacinto6evm (modified content, untracked content)
        modified:   mydroid/device/ti/proprietary-open (modified content)
        modified:   mydroid/external/sepolicy (modified content)
        modified:   mydroid/frameworks/av (modified content, untracked content)
        modified:   mydroid/frameworks/base (modified content, untracked content)
        modified:   mydroid/hardware/ti/dra7xx (modified content)
        modified:   mydroid/system/core (modified content)

提示modified content, untracked content是因爲在add的時候這個目錄下面本來就有一個.git文件,自然就會add失敗,先刪除這個.git文件再add

7、強行切換分支

git checkout -f branch_name

8、

git.exe push --progress  "origin" release:refs/for/release%r=xxx

Counting objects: 3, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (3/3), done. 
Writing objects: 100% (3/3), 663 bytes | 0 bytes/s, done. 
Total 3 (delta 0), reused 0 (delta 0) 
error: unpack failed: error Missing tree 4201fba85e02299e016f0129621858ec21ac94ae 
To (url) 
! [remote rejected] release -> refs/for/release%r=xxx(n/a (unpacker error)) 
error: failed to push some refs to '(url)'

git did not exit cleanly (exit code 1) (593 ms @ 2015/5/15 9:51:12)

解決方法:git push --no-thin origin HEAD:refs/for/release

9、配置git review

git config --global gitreview.username "your name"

10、在pull服務器上的代碼到本地進行編譯時發現編譯失敗,最後發現導致這個的原因是因爲.gitignore文件。在移植其它項目的代碼時,由於其它開發人員在該項目上使用過git工具,這個工具會生成一個名爲.gitignore的文件,這個文件會自動忽略一些項目文件,在你push到服務器的時候不會上傳這些文件,當其它人從服務器上pull代碼時,他的本地工程並不包含這些必要的文件,導致編譯失敗,解決辦法就是刪除隱藏的.gitignore文件

find . -name .gitignore | xargs rm -rf

查找這些文件是否還存在:

find . -name .gitignore

11、使用Gerrit創建倉庫時,必須勾選界面上的“create initial empty commit”選項,否則創建項目以後無法在Gerrit的web界面創建分支

12、更新最新的代碼

git pull --rebase

git pull 

13、當我們在git push以後,在Review後,遇到門禁或不能merger到代碼庫中,這種情景最讓人頭疼

 

解決方案:

(1) 將本地代碼更新到Remote中的某個已知的commitid 裏面:

     執行git log命令,查看所有commit記錄,然後選擇一條commitId。

     在本地執行git reset --hard commitId ,就是更新本地與Remote中的commitId一致。

     現在本地代碼是和Remote中的commitId時間相一致的代碼。注意,commitId時間不一定是Remote最新時間段代碼。

(2)更新本地代碼到Remote最新時間代碼:

     然後執行git pull 命令,更新本地代碼到Remote最新的時間代碼。

(3) 本地代碼與Remote代碼相一致,然後在執行提交操作。

     執行git add,git commit git push等操

14、強制checkout分支覆蓋本地文件

git checkout -f branchname

15、命令創建、刪除Gerrit project

#創建Gerrit項目
 ssh -p 29418 [email protected] gerrit create-project --empty-commit mytest
#刪除Gerrit項目
ssh -p 29418 [email protected] deleteproject delete --yes-really-delete test1

16、當要在Gerrit上面做Jenkins持續集成時,需要在Gerrit中添加label verified選項

#添加Jenkins的verified的文件
[label "Verified"]
    function = MaxWithBlock
    value = -1 Fails
    value =  0 No score
    value = +1 Verified

17、獲取當前分支名稱

git symbolic-ref --short -q HEAD

18、創建裸倉庫、克隆

mkdir -p /home/barry

cd/home/barry

git init --bare hooktest.git

git clone ssh://[email protected]/home/barry/hooktest.git

注:1)ssh://也可以改成http://或git@

2)aaa爲遠程服務器登陸名稱

3)克隆地址需要加上遠程git倉庫的絕對路徑home/aaa/barry/hook

19、獲取當前分支名稱

git symbolic-ref --short -q HEAD

 

 

 

20、對於有密碼的git倉庫,在每次pull代碼時都需要輸入密碼,比較麻煩,可以通過配置config文件保存密碼,方式如下:

        

進入git倉庫目錄.git,編輯config文件,找到[remote "origin"]選項,在用戶名後面加冒號和密碼,例如:

 

 

url = http://user:[email protected]/git/

 

其中123456就是該倉庫的密碼,保存退出以後,每次更新代碼就不用輸入密碼了

 

21.在使用git pull命令時,偶然出現卡頓在Compressing objects界面,無法繼續更新倉庫內容,如下:

 

remote: Counting objects: 45, done.
remote: Compressing objects: 100% (30/30), done

 

git pull無法繼續,此時先使用git fetch命令更新遠程倉庫,再使用git pull則成功更新本地git 倉庫。

 

22.git apply patch時報錯100644->100755,這個是因爲git檢查到文件的權限發生變化,拒絕打補丁,可以修改git config來忽略這個檢查:

git config core.filemode false

設置成false後就不會執行這個檢查。

23.git切換到空分支

git checkout --orphan

25、git查看兩個commit之間的文件修改記錄

git diff --name-status HEAD~5 //status參數會顯示文件的修改狀態,如A(添加)、D(刪除)、M(修改)
git diff --name-only HEAD~1 HEAD~10 //only只顯示文件名稱

26、git添加遠程倉庫

git remote add 任意名字 遠程倉庫地址
git remote -v   //查看遠程倉庫詳細信息
git remote rm name  //刪除遠程倉庫

27、查找文件的提交記錄

git blame file_name

28、repo生成manifest文件,需要在包含.repo的工程目錄中執行:

repo manifest -r -o manifest.xml

29、gerrit提交出現衝突的解決方式

點擊界面的rebase按鈕,點擊change parent revision,可以同步到最新的節點:

 

如果仍然出現衝突,只能同步代碼到本地,手動解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章