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,可以同步到最新的節點:
如果仍然出現衝突,只能同步代碼到本地,手動解決。