git常用命令总结

  1. 从远程获取代码库

    git fetch

  • 从远程获取代码库,不自动merge

  • $ git rebase master

  • 这时,git会把dev分支里面的每个commit取消掉,然后把上面的操作临时保存成 patch 文件,存在 .git/rebase 目录下;然后,把 dev 分支更新到最新的 master 分支;最后,把上面保存的 patch 文件应用到 dev 分支上;

  • 从 commit 记录我们可以看出来,dev 分支是基于 hotfix 合并后的 master ,自然而然的成为了最领先的分支,而且没有 merge 的 commit 记录,是不是感觉很舒服了。

  • 我们在使用rebase合并分支时,也会出现conflict,在这种情况下,git 会停止 rebase 并会让你去解决冲突。在解决完冲突后,用 git add 命令去更新这些内容。然后再次执行git rebase --continue,这样git 会继续应用余下的 patch 补丁文件。

  • git pull –rebase

  • 这个命令做了以下内容:
    a.把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)
    b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
    c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并

  • 从远程下载代码并合并

        

git pull 和 git pull -r 的区别

git pull = git fetch + git merge

git pull -r = git fetch + git rebase

假设有个场景,A和B都需要push代码到origin的master上,A和B拉取的代码后,新建了自己的分支进行修改,并要提交到master上;

此时A的修改内容先提交到origin上;

那么B在提交前需要拉取最新的代码(包含A的修改的代码D),此时B有两个选择:

如果他使用git pull origin master 拉取代码,使用git

log查看提交记录,此时可以看到有一个commit节点叫Merge xxxxxxxxxx… 这样会形成一个菱形的提交记录;

如果使用git pull -r origin master 可以避免这种菱形提交,会将B的提交rebase到最新master节点上,此时可能会遇到的问题是,如果B的提交和A的提交有交集的地方,会引起冲突,如果这种情况,会提示你先解决冲突conflict,需要B去比较与A的提交冲突的地方,解决完冲突之后,add更新下B的修改后,执行git rebase --continue 就可以继续pull -r的过程;过程中如果觉得有任何操作失误,可以使用git rebase --abort 随时停止pull rebase的过程,并且分支会回到rebase开始前的状态。

2.上传远程代码

git push origin HEAD:refs/for/master

1.git push <remote 名字> <本地分支的名字> : <远程库的名字>

git push origin HEAD:refs/for/master

git push 肯定是推送

origin : 是远程的库的名字

HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支

refs/for :意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的

refs/heads 不需要

3.修改提交记录

git commit --amend

second commit 是你上次提交的描述,下面是一下说明信息,有告诉你上次提交的文件信息等等,可忽略。接下来你要是想修改描述信息的话。直接键入:i,此时进入了输入模式

可用键盘上下键转到描述所在的那一行,然后进行修改:

修改完成后,按下 Esc键退出编辑模式,在键入 :wq 回车退出并保存修改,完成提交。这是你再git log 看一下提交日志:

4.回退

  • 退回到最出的origin/master,其commit节点号是d9ab27dc42c753b9a1bb2163221b73f63bd490af 那么我可以使用

  • git reset --hard d9ab27dc42c753b9a1bb2163221b73f63bd490af 回到这个节点。

  • 用 git reset --hard HEAD^ 回退到上一个版本

5.上传至缓冲区

  • git add . 将添加当前修改,也可以 git add 目标文件名 添加指定文件;可以使用git status 查看当前的状态;如果有某些文件在.gitignore文件里面被忽略了不让add的话, 我们可以使用 git add -f 目标文件名 进行强制添加;

  • git add命令将文件修改添加到暂存区Stage,也就是将要提交的文件修改添加到index中。关于暂存区概念请查看Git之工作区、版本库、暂存区

  • 用法

  • git add . 将当前工作区中所有的的文件修改、文件新增、文件删除添加到暂存区

  • git add -u 将当前工作区中所有的文件修改和文件删除添加到暂存区,但不包括文件新增

  • git add -A 将当前工作区中所有的的文件修改、文件新增、文件删除添加到暂存区

  • git add * 将当前工作区中所有的文件修改、文件新增添加到暂存区,但不包括文件删除

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值