本文主要是自己工作中关于git常用命令的总结,并不具有权威性
1、提交代码的流程
git checkoutv916//切换到916分支
git status //查看代码状态(被修改的文件)
git diff//查看修改的具体代码
git add. // 添加所有的代码
git commit -m"需求名称"
git pull --rebase
git push origin v914:refs/for/v914 // v914为当前分支名称,随着版本的更新而改变
2、若是有冲突,先解冲突,在执行下面的命令:
git add .//添加解决冲突的代码
git rebase --continue
//然后在继续push代码
git pull —rebase
git push origin v914:refs/for/v914 //提交代码
3、代码提交前,续加代码
续加代码命令:代码在commit之后,push提交之前,进行了修改
git add .
git commit --amend //续加代码命令
git pull --rebase
git push origin v914:refs/for/v914 //提交代码
4、分支合并
//在918分支上,将916分支合并过来
//先保证各个分支的代码已经更新到最新
git checkout v916 //切换到916分支
git pull --rebase //更新代码
git log //查看是否最新
git checkout v918 //切换到918分支
git pull --rebase //更新代码
git log //查看是否最新
//git log 是非必须命令
//合并:
git merge --no-ff v916 //在918分支上执行命令,将918的代码合并到916上
//然后如果有冲突,解决冲突
根据这张图片可以看出
git merge –no-ff 可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch 状态。
git merge 则不会显示 feature,只保留单条分支记录。
5、将在其他分支上的单个Commit合并到新的分支上
5.1、 寻找commitId
登录合并代码的网站,找到这个commit的commitId,注意不是changeId
5.2、在本地挑拣分支
//在终端使用命令行
//单个commit只需要
git cherry-pick commitId //此处的cmomitId就是上图中的所指
//多个commit 只需要
git cherry-pick commitid1..commitid100
//注意中间的两个点,表示把两个commit区间的所有commit多复制过去
git push origin v914:refs/for/v914 //提交代码
//如果这个commit之前是自己提交的,那么commit中就有个人的信息,可以直接提交
//如果这个提交的commit是其他人提交的,那这里就提交不上去(invalid author)
//这就需要重新写commit信息
git log //查看本地提交的log,查找需要提交的commitId(如下图)
git reset commitId //重写commit信息
//然后重新提交代码
git status //查看代码状态(被修改的文件)
git add . // 添加所有的代码
git commit -m "需求名称"
git pull --rebase
git push origin v914:refs/for/v914 // v914为当前分支名称,随着版本的更新而改变
注意:图中方框为一个完整的提交commit,commitId位于方框中最下方,图中最上方的commit是head的commit,即下一个commit。
6、解决冲突
6.1 更新后冲突
//提交代码前更新代码
git pull --rebase
//代码有冲突,在文件冲删除冲突代码,注意是保留最新代码,还是都要保留
//配置文件有冲突,删除>>>>>>> ============ <<<<<<<<<<
6.2 还原本地保存的代码产生冲突
//把本地保存的代码恢复过来 有冲突,需要解决 但是工程打不开
git stash pop
//用命令行打开工程配置文件,删除多与代码
vim RenrenOfficial-iOS-Concept.xcodeproj/project.pbxproj
然后删除多余的冲突代码 >>>>>>> ============ <<<<<<<<<<
7、clone工程
//执行克隆命令,将远程服务器的代码克隆带本地
git clone ssh://clientgit/<工程名>.git
//本地创建新的分支develop
git checkout -b develop origin/develop //develop代表分支名称
7.1 初始化Clone远程仓库到本地
-
命令行的初始化Clone步骤是:cd到你的本地为该工程建的工作目录,用以下命令克隆下载
git clone ssh://clientgit/<工程名>.git .
7.2 安装gerrit的changeID自动生成hook脚本
-
要Push本地变动到gerrit服务器,需要每个提交的Message里都带有"CommitId:GUID"。通过以下配置可以在每次提交时自动生成CommitId:
cd<工程根目录> scp-pclientgit:hooks/commit-msg.git/hooks/ chmodu+x.git/hooks/commit-msg
7.3 检出远程develop分支到本地,开始工作
-
用命令行的方式检出分支:
gitcheckout-bdeveloporigin/develop //develop代表分支名称