【开发流程】(完成工作后,先将自己分支上的修改合并到主分支。)
(git fetch 。fetch 是比 pull 更细粒度的操作。fetch 是将远端的代码拿下来,而 pull 是执行 fetch 后再与本地的代码合并。)
===以下所有命令都是在相应目录中执行====
一、普通提交
- 编码完成后提交到本地分支
git add ‘文件名xxx’
文件名为 ‘.’ 时表示当前目录下的所有文件,也可以指定文件,如:
a.txt , *Window.as, xx/x.datgit commit -a -s -m “注释”
-a 把所有删除或修改的檔案都 commit(all), -s 签名(sign)
注:执行commit命令后需输入提交说明才可进行下一步,否则提交失败
- 与远程同步(如果不执行这步,本地修改将无法合并到版本中)
git pull –rebase
如果过程中出现冲突,按下面方法处理,如果没有,则跳过。
解决冲突过程:
rebase出错会显示冲突的文件名。
如:
CONFLICT (add/add): Merge conflict in xx.xxx
打开冲突文件修改,完成后使用
git add xx.xxx –添加修改的文件
git rebase –continue –继续命令
3.将本地数据push到远程
git push origin HEAD:refs/for/master
4.进入网站 http://10.0.0.21:8080 ,
在 My->Change下面找到提交的内容,
按==Preview==按钮,对内容评分,都选第一项,==publish and commit==之后内容才会合并到版本中
否则其他是获取不到你提交的内容。
二、cherry-pick(提交备份 )
基于你远程分支v1.1.5 开一个新的本地分支v1.1.5,
然后 把你想要的commit 一个一个的cherry-pick 到新分支v1.1.5。
最后 psuh本地新分支,到远程分支v1.1.5
客户端现在创建了v1.1.4的分支,有关1.1.4的修改,后面要提交一份到分支上
创建分支
git checkout -b v1.1.4 origin/v1.1.4
切换分支
git checkout v1.1.4
git checkout master
将修改添加到分支上
git checkout v1.1.4
git cherry-pick commit-id
commit-id可以在master上git log查看到
git push origin HEAD:refs/for/v1.1.4
步骤:
1. git log
1. git checkout xxx
1. git pull
1. git status
1. git cherry-pick xxxid
1. git pull –rebase
1. git status
1. git push
若有冲突, 解决,然后再
git cherry-pick –continue
撤销(到xxxid,该id的提交会保存。)
git reset –hard xxxid –(不留痕)
git reset –soft xxxid –(留痕)–不好用,用上面的,或者去掉(–soft)
三、缓存修改的文件(git stash )
1.git stash
2.修改其他bug,提交之后
3.git stash pop (还原之前的修改)
另:
git stash list (可以查看缓存列表)
git stash clear(清空场景(stash)堆栈)
四、【其他命令】
将提交当做另一个提交的patch
git push origin HEAD:refs/changes/ID号
【恢复文件】
git checkout 文件名
【恢复当前目录下的所有文件】
git checkout .
【显示提交日志】
git log
git log –graph –pretty=oneline
【日志回滚】
git reset commitid
commitid可以通过git log命令查看
回滚日志并不会回滚修改的内容
【删除feature分支】
git branch -d feature
五、【一些问题和解决方案】
Q1.# Your branch is ahead of ‘origin/master’ by 6016 commits.
A: 解决方法:
git pull –rebase
Q2.把多次提交整合到一个commit里面
A: amend
git reset –hard f3861e7267e2ae3e70bb54d97fc957cb0097741e
git commit –amend “temp”
git commit –amend f3861e7267e2ae3e70bb54d97fc957cb0097741e
git commit -a -s -m “tmp”
==git commit== 命令的-a选项可只将所有被修改或者已删除的且已经被git管理的文档提交倒仓库中。如果只是修改或者删除了已被Git 管理的文档,是没必要使用git add 命令的。
git add .命令除了能够判断出当前目录(包括其子目录)所有被修改或者已删除的文档,还能判断用户所添加的新文档,并将其信息追加到索引中。
(先add,再commit, push, publish and commit 做完才真正提交结束!!)
git rebase master
git rebase origin/master
git rebase –continue
git rebase –about///
git status
git log
git branch
git checkout work–切换分支(.idea/ 恢复某个文件夹)
git pull 拉取远程最新代码
git branch -m work my_branch 重命名分支
git add .
git diff a9685a244dfd154c630a6df32efe9e09fc5a1390