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,可以同步到最新的节点:

 

如果仍然出现冲突,只能同步代码到本地,手动解决。

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