git常用指南

常用操作
Git status 查看本地状态
Git log 查看提交过的版本
Git checkout 取出任意历史版本
建立分支 git branch branch_name / git checkout –b branch_name
合入:将分支合入当前分支
1. Git checkout master_branch
Git merge 待合入分支
存在环
2. git checkout master_branch
Git rebase待合入分支

git log –oneline --graph 查看分支合入的图形显示

提交到暂存区 git add
提交至本地 git commit –m description
Git commit –amend 覆盖之前提交记录
提交到公司代码库 Git push origin HEAD:refs/for/master

HEAD:refs/for/master  这是一个评审分支

Rebase merge区别
Rebase
特点:干净的、线性的提交历史
git rebase 操作:
把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上

merge
特点:保存项目完整的历史,并且避免重写公共分支上的 commit

Fetch与pull区别
Pull
首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。所以可以认为git pull是git fetch和git merge两个步骤的结合。
命令:
git pull <远程主机名> <远程分支名>:<本地分支名>
//取回远程主机某个分支的更新,再与本地的指定分支合并。
Fetch
更新git remote 中所有的远程仓库所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
冲突解决

  1. 在本地仓库中,更新并合并代码
    Git fetch origin
    Git rebase origin/master
  2. 依据提示分别打开冲突的文件,逐一修改代码
  3. 所有冲突都修改完毕后,提交修改的代码
    Git add –u
    Git rebase –continue
  4. 更新patch
    Git push origin HEAD:refs/for/master

项目开发
项目建立

  1. cd ~/workspace/git/ // 进入你个人的工作目录
  2. mkdir project_name // 新建一个目录用于存放代码,名称可以和远程仓库名称一样
  3. cd project_name // 进入你新建的目录
  4. git init // 使用git初始化这个目录为一个git仓库
  5. git remote add origin git@github.com:22th/oh-my-zsh.git // 关联本地仓库到一个远程仓库
  6. git fetch --depth=1 // 更新远程仓库的一些信息到本地,比如分支信息等
  7. git checkout -b master origin/master // 检出一个分支master并关联远程的master分支
  8. git pull // 更新本地仓库代码

通过以上流程就可以将远程项目同步到本地,现在默认的是远程的master分支,你不可以在master分支修改代码,一般来说你也没有这个权限。 同步代码到本地之后,你需要根据业务需求,新建一个开发分支,名称更具你的需求来调整,比如你要开发一个新功能,那你就建一个feature-xxx分支,如果你是解决一个bug,你可以建一个hotfix-xxx分支。新建分支不建议从本地建,你应该从git仓库管理后台新建,然后再检出到本地。管理后台新建分支很简单,不说了。
然后你就将你新建的分支check到本地,命令如下:
git checkout -b feature-xxx origin/feature-xxx
项目开发

  1. git add // 将工作区修改添加到暂存区,加上 --all 参数表示将所有修改添加到暂存区
  2. git commit -m “msg” // 将暂存区的修改添加到版本库
  3. git push -u origin feature-xxx // 将本地仓库中的修改推送到远程
  4. git status // 查看当前工作区间状态
  5. git log // 查看历史commit
  6. git checkout – // 用最后一次commit的文件替换当前工作区间的文件
  7. git reset --hard // 丢弃工作区间所有修改,回滚到上一个commit状态
  8. git checkout <版本号> // 回滚到指定版本

tag
tag有两种类型:轻量级的(lightweight)和含附注的(annotated)。轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。

git show : 查看所有tag
git tag –a tag_name –m tag_description : 创建annotated tag
git tag -a tag_name : 创建lightweight tag
git tag –d tag_name : 删除tag
git push origin <tag_name> : 推送某个tag至远程
git push origin –tags : 推送所有tag至远程

撤销
修改最后一次的提交
Git commit –amend 利用当前暂存区快照重新提交,但会覆盖上一次的提交。
撤销已暂存的文件
Git reset HEAD file1 工作区file1的状态被恢复到暂存区中有关file1的状态,暂存区中file1将会消失
撤销对文件的修改
Git checkout – file_name

回滚
Git reset –hard commit_id 将工作区回滚到commit_id所指的提交的状态

创建patch

git format-patch
为从commit_id开始算起的n个commit做patch
git format-patch commit_id -n
为commit_id1和commit_id2之间的几个commit做patch
git format-patch commit_id1…commit_id2

git diff
git diff commit_id1 commit_id2 > diff_file_name

合并patch

检查是否可以合入patch
git apply --check path/to/xxx.patch
git apply --check path/to/xxx.diff

合入patch
git apply path/to/xxx.patch
git apply path/to/xxx.diff
或者
git am path/to/xxx.patch

代码与patch冲突解决:

首先先合入不冲突代码
git apply --reject xxx.patch

解决冲突后
git add modify_name_file
git am --resolved
git am --continue

跳过冲突
git am --skip
回退打入的patch
git am --abort

参考:
https://blog.csdn.net/riddle1981/article/details/74938111

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值