git 常用命令总结

git bash 常用命令

clone代码

git clone xxxxxx.git

本地修改,提交

(1)查看当前代码的修改状态,执行命令:git status
(2)将修改的文件提交到本地暂存区,执行命令:git add filename 或者将所有修改过的工作文件提交暂存区,执行命令: git add .
(3)将暂存区的修改文件提交到本地git库中,执行命令:git commit后输入commit message,或者git commit -m “引号内输入commit message”
(4)将提交的修改推送到远端,执行命令:git push <远程主机名> <本地分支名>:<远程分支名>(例子中使用的是默认的远端origin,分支master)

代码更新

git pull origin master
Master也可以替换成其他远端库分支。

线下解决合并冲突

(1)将项目主库分支同步到本地
git pull git@rnd-isourceb.huawei.com:20150826/test.git master

(2)打开有冲突的文件
vi “Your conflict file”
1、打开文件后,会出现以下内容,<<<<<<<HEAD与=======之间的内容是当前分支的,=======与>>>>>>>之间的内容是pull过来的内容。解决冲突的办法也就是两者选其一或者整合到一起。

(3)在解决了所有文件里的所有冲突后,需要运行以下命令,推送到远程仓。
git add .

git commit -a

git push origin master

查看所有分支

git branch -a

切换到某个分支下

git checkout “分支名”

git checkout -b “新分支名” 从主分支创建新的分支并切换到该分支

代码回退

(1)回退整套代码到最近一次提后的状态
git reset --hard HEAD 参数 --hard表示删除自该次提交后所有的修改记录(未跟踪文件除外)
git reset --soft HEAD 回退代码到指定的某次提交状态

(2)撤销已暂存的文件
git reset HEAD <文件路径> 撤销已经修改的文件
git checkout --<文件路径> 撤销未跟踪文件
rm <文件或文件夹路径> 如果加上-f,那么表示强制;-r递归的删除目录及子目录内容

(3)清楚所有未跟踪文件
git clean -dxf清除所有未跟踪文件,包括纳入.gitgnore中的文件

二分法排查是哪个分支引入的问题,

使用命令: git bisect 55d5899b15b50e13c2bdfd6903943b8246fd8393 b63e626ffc282bb0c73c147d05b35b59e64a1273

具体使用教程 http://www.ruanyifeng.com/blog/2018/12/git-bisect.html

教程总结
(1)找到一个未出错的老版本的cash
(2)git bisect start [终点cash] [起点cash] 该命令会自动切换到两个cash的中点
(3)如果对应的版本有问题,使用git bisect bad标记;否则使用 git bisect good 标记

git blame [filename]

追溯一个指定文件的历史修改记录

解决冲突的几种方式 https://www.cnblogs.com/zjfjava/p/10280247.html

(1)主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新,本地的版本已无用,可以强拉
git fetch --all
git reset --hard origin/dev
git pull
(2)未commit先pull,视本地修改量选择revert或stash

将相同仓库中的dev分支中的commit迁移到release分支的操作需要 git cherry-pick 命令,具体操作如下:

1)找到需要合入的额commitID
2)确定需要合入到的分支名:例如分支名为release-2.1.0。执行如下命令切换到release-2.1.0分支
    git checkout release-2.1.0
3)执行如下命令,将对应commit拉取到release-2.1.0分支
    git cherry-pick [commitID]
4)推送到远程仓
    git push

使用现有分支创建新分支:

git checkout -b [NewBranchName] origin/ExistedBranchName

在push之前,检查自己的commit,

git show
git log -n 1

如果提交的commit信息有问题,可以通过下面命令修改

git commit --amend

在commit之前,通过如下命令,检查自己的代码

git diff --staged

如果在提交commit之前,master分支已经发生了更新,需要执行变基操作

1)git rebase -i origin/master
2)打开editor,选择(pick)/删除(delete)/修改(edit)/重排序(re-order)需要提交的commits
3) git push -f

git 合并commit操作 https://www.jianshu.com/p/964de879904a

git rebase 合并分支操作步骤

git checkout dev_12x
git pull
git checkout your_branch
git rebase dev_12x
git push -f

删除分支操作

(1)本地分支:
git branch -d [branchName]
(2)远端分支:
git push origin --delete [branchName]

如何生成patch和正确的打patch

生成patch:
1)两个commit间的修改(包含两个commit)
git format-patch <r1>...<r2>
exg:
git format-patch d77aaac74845435744c49ae65511d9e1be79ed5c...046ee8f8423302f5070ca81b4e246516e919cd7a -o patch

2)单个commit
git format-patch -1 <r1>

3)从某个commit以来的修改(不包含该commit)
git format-patch <r1>

打patch:
1)检查patch是否能应用成功:
git apply --check patch-name
2)打patch:
git am patch-name
3)若打patch失败,可以按照此操作来执行:https://zhuanlan.zhihu.com/p/104055075

修改commit作者和邮箱:

git commit --amend --author="NewAuthor <NewEmail@address.com>"

git clone 报错:error: RPC failed; curl transfer closed with outstanding read data remaining 的解决方案:

(1)git config --global core.compression 0
(2)git clone --depth=1 <url>
(3)cd <shallow cloned project dir>
(4)git fetch --depth=N, with increasing N  // eg: N= 100, 500, 1000...
(5)git fetch --unshallow 

git remote 使用(一般rebase使用)

git remote add remote-name URL   // 添加新的远程仓库,并命名为remote-name
git fetch remote-name            // 通过名称:remote-name拉取远程分支
git rebase remote-name/branch-name  // 变基操作,同步远程分支的代码
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值