git基础使用指南
git 正常使用流程,为避免文件覆盖以及分支的整结性,尽量采用如下方式进行开发
1. 建立并切换到本地开发分支–develop
git checkout -b develop
2. 在develop上开发,提交本地修改增加的文件
git add fileName / git add .
git commit -m "description"
git commit -am "description"
3. 需要上传服务器时,切换到本地master分支
git checkout master
4. 从远程仓库拉取最新内容
git fetch ##本地master未修改
5. 将远程分支rebase到本地master分支
git rebase origin/master
由于本地master未进行修改,可以使用`git pull`代替`4,5`两个步骤
6. 将master分支的更新rebase到develop分支。如遇冲突,可参考9进行处理
git checkout develop
git rebase master
7. 解析冲突并测试,确认成功,将develop rebase至master分支。如遇冲突,可参考9进行处理
git checkout master
git rebase develop
8. 将master所有commit推送至远程仓库
git push
9. 处理版本冲突
识别冲突
a. 本地找到你有冲突的分支(子分支), 使用
git stash将未提交的内容保存起来b. 使用
git checkout parentBranch检出需要merge的分支,使用git pull命令更新父分支.c. 使用
git checkout subBranch切换到需要合并的分支.d. 执行
git rebase -i origin/parentBranch, 此时切换到了一个临时分支e. 使用
git status查看状态, 出现的bothmodified项即是冲突的文件.f. 使用
git diff查看冲突内容解决冲突
a. 使用编辑器
如vim打开冲突文件,查看HEAD标记<<<<<< HEAD 别人修改的内容 ============ 你修改的内容 >>>>>>>>>>b. 将冲突部分修改为正确的内容并保存.
c. 使用
git status查看状态,此时文件依旧是bothmodifiedd. 使用
git add .|git add file|git add file1 file2 filen, 标记为已解决e. 使用
git rebase --continue继续进行rebase, 直到rebase成功.f. 使用
git push推送至远程仓库
10.合并多个commit
两种方法:
1. 一是在提交commit使用参数,这样上一个commit将被合并到当前commit:
git commit -a --amend -m "my message here"
如果之前有一个提交,并且信息为:
git commit -a -m "my last commit message"
则这个commit message将不存在。但该commit的信息已经合并到"my message here"中了。
2. 二是如果你提交了最后的修改,这时可用:
git reset --soft HEAD^ #HEAD^意为取消最后commit
git commit --amend
这将会把最后一个commit合并到前一个提交中去,例如(由上往下读):
git add a.text
git add b.text
git commit -a -m "my message here"
git commit -a -m "my last commit message"
那么最后存在的将是"my last commit message"。也可后退n个,合并到前面第n+1个commit中去:
$git reset --soft HEAD~n #后退到第n,我也不清楚具体含义。
$git commit --amend [-m "new message"]
最方便的是调用refLog查看操作历史,找到具体的commit id,然后直接reset##[commit_id]就回到你要的版本
$git reset --hard [commit_id]
11. 暂存git stash使用
1. 使用`git stash`|`git stash "message"`暂存当前工作区修改的文件
2. 使用`git stash pop` # apply last stash and remove it from the list
3. 使用`git stash apply stash@{1}` 可以把指定版本号为stash@{1}的工作取出
4. 使用`git stash clear`取出暂存的所有工作
5. 使用`git stash list`列出所有暂存的工作