这里写自定义目录标题
1 Git 命令
- 克隆远端代码
git clone http://.....
git clone -b dev_jk http://......(指定分支)
git实际上是维持的一棵commit树,保存不同commit状态下的代码
1.1 本地代码
- 查看本地的代码状态,将显示未提交修改的文件、提交修改的文件
git status
- 新增commit,将文件修改提交到本地git
git add filename
git commit -m "备注"
- 撤销commit
git log (显示记录的全部信息)或者 git log -pretty=online (显示记录的重要信息)或者 git reflog (建议)
git reset 版本号 # 只回滚记录,不回滚代码
git reset --hard 版本号(七位局部索引值) // 调整版本 # 回滚记录和代码
- 撤销文件的修改(相对于已经commit的版本)
git checkout --filename
1.2 分支处理
- 查看本地和远端分支
git branch -a
- 从当前分支新增一个分支,和 切换分支
git checkout -b localbranch # 新增分支
git checkout localbranch # 切换分支
- 删除本地分支
git branch -d localbranch # 如果尚有未提交的代码就没法删除
git branch -D localbranch # 强制删除
- 新增远端分支 (通常我们都是新建一个本地分支,做了修改之后,然后更新到远端的方式来新增一个远端分支)
git push origin origin_new_branch
- 删除远端分支
git push origin -d origin_old_branch
1.3 远端代码修改
- 读取远端分支的更新
git fetch origin origin_branch
- 在当前分支合并远端分支
git merge origin/origin_branch # 远端分支修改作为一个new的commit合并到当前commit (推荐)
git rebase origin/origin_branch # 以远端分支的更新为base,之后添加所有的本地commit
- 同步远端代码到当前本地分支(先commit本地分支的代码)
git pull origin origin_branch = (git fetch + git merge)
git pull -r origin origin_branch = (git fetch + git rebase)
2 Git 开发流程
- 从master 切出一个新的分支,推荐格式 “开发者/newFeature”
git checkout master
git pull origin master # 切记要先同步远端代码
git checkout -b xxx/newFeature
- 在当前分支开发
git status
git add filename
git commit -m "xxx"
git push --set-upstream origin xxx/newFeature # 在远端创建自己的分支,可以频繁提交
- 合并代码
git checkout xxx/newFeature
git pull origin master # 处理冲突
git push origin xxx/newFeature
- 远端git发起分支合并
3 小技巧
3.1 压缩提交记录
在本地分支开发时,我们经常会频繁commit代码,那么在我们合并代码到master上时将有大量的记录存在,那么可以通过一下操作达到压缩的目的:
git log找到起始commit版本号
git reset 版本号
重新git add和commit
git push -f origin xxx/newFeature # 可能存在冲突,所以需要强制覆盖远端,谨慎
3.2 处理冲突
- 冲突的表现:
<<<<<<<< HEAD
当前分支的内容
=========
另一个分支的内容
>>>>>>>>>
- 冲突的解决
1. 编辑文件、删除特殊符号
2. 把文件修改到满意的程度,保存退出
3. git add [file]
4. git commit -m "log message"
3.3 本地分支-远端分支
关联本地分支到远端分支
git branch --set-upstream 本地新建分支名 origin/远程分支名
查看本地分支和远端分支的关系
git branch -vv
3.4 git rebase
git pull 一下
在个人分支上,git rebase -i origin/xxx_remote
解决冲突
提交