1、git status
git个人理解
精选 转载转载自:http://147731489.i.sohu.com/blog/view/233041680.htm
1、git status
1、git status
<1>、已经是准备提交状态(git add 之后的状态)
可以通过git reset HEAD <file>,恢复。执行此命令不会还原所做的修改,可放心使用。
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
使用git add <file>进行提交,或者使用git checkout -- <file>放弃修改,还原为与服务器版本一致的代码。
Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
<3>、未跟踪文件(本地新增加的文件,服务器代码仓库中没有的文件)
使用git add <file>进行提交
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
一般是一些编译生成的文件,我们不需要提交。即可以使用.gitignore进行忽略。
2、git rm
删除git工程里的某文件
git rm
git commit -m “ ”
git push
注意,使用git rm 之后,git status查看,可以看到文件状态已经为change to be committed。所以不需要再做什么git add的处理了。其他git mv等命令也是类似。
3、merge信息
git pull后出现冲突情况,使用git log看到megre的log信息。判断当git push时会将此merge信息提交,致使出现merge问题。
解决方法:git reset SHA
SHA值由git log 时查看,每个提交的SHA值不一样。
4、git branch
因为repo init 时,有增加一个-b 的参数,此参数会连带下载该分支的默认manifest.xml,repo sync时会根据此manifest.xml下载该分支代码。因此下载到本地的代码可不必再进行分支切换。即不再需要运行如下命令:repo forall -c "pwd&git checkout -b XXXXX origin/XXXXX&echo"
本地没有分支的情况,更新和提交代码时,命令会有所不同。即要指定更新和提交的分支。
git pull 变为 git pull origin <branch_name>
git push 变为 git push origin HEAD:refs/for/<branch_name>
本地不做分支切换,可避免git pull时,自动出现merge消息。即类似如下的消息:Merge branch 'XXXXX' of ssh://192.168.1.2:29418/XXX/XXX/XXX into XXXXX
当出现此merge消息时,则需要手动合并处理,后续介绍。
5、cherry-pick
提交到gerrit上,出现本次提交依赖于(depended on)merge消息时处理方法:
<1>、将merge的提交放弃(Abandon change),
即放弃类似Merge branch 'XXXXX' of ssh://192.168.1.2:29418/XXX/XXX/XXX into XXXXX的提交记录。
注意,真正修改到代码的提交记录不需要放弃。
<2>将本地代码更新到服务器最新
git reset --hard HEAD
此命令有可能将本地修改内容还原为与服务器相同,所以最好做备份。
git fetch origin
更新服务器代码 (git fetch 与git pull的区别在于,git pull = git fetch + git merge,所以使用git pull会出现一下merge消息,相对来说,git fetch安全一点)。如果fetch下来,出现冲突,则需要手动合并。
<3>cherry-pick代码,重新提交
在依赖于merge的提交记录中,复制cherry-pick,并本地执行一下。如:git fetch ssh://username@192.168.2.1:29418/XXXX/XXX refs/changes/14/214/1 && git cherry-pick FETCH_HEAD。然后再提交,git push origin HEAD:refs/for/<branch_name>,提交到指定的分支。即会取消原有的依赖关系。
上一篇:用git减肥
下一篇:Git常用操作命令收集:
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
git clone 与 git 安装
git clone 与 git 安装
git 安装程序 自定义 -
【GIT】git个人手册
GIT个人手册 版本 日期 修订内容 作者 V01 ...
git 暂存区 工作区 github 远程分支 -
git 理解
...
其他 -
httpclient个人理解
httpclient:模拟浏览器发送请求,服务器会响应数据,用心区域网内 不同系统间的请求调用 依赖 httpclient.jar和httpcore.jar需要同时纯在
apache post请求 java jar 表单