且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Git常用命令

更新时间:2022-05-10 22:07:04

版本的还原

git reset --hard d756f627fe568f4d8bcf1852ba60557eeab477a5(版本号)

如果远程服务器也需要还原到d756f627fe568f4d8bcf1852ba60557eeab477a5版本,则继续执行

git push -f

remote远程分支操作

git remote add rocket(远程分支名字,随意起) https://github.com/benjaminwhx/rocket.git(远程分支地址)
git remote -v(查看本地的远程分支信息)
我们可以用git pull rocket master获取远程分支master分支上的更新到本地。
git push rocket master推更新到远程分支

rebase和merge的区别


git merge应该大家都比较熟悉,就是把branch merge进来;
git rebase的意思其实也是蛮简单的,字面意思rebase就是把branch的根基替换一下,有点像嫁接。
网上一直流传的三张图,很经典。

before merge/rebase

1
2
3
4
A <- B <- C    [master]
^
\
D <- E [branch]

after git merge master

1
2
3
4
A <- B <- C
^ ^
\ \
D <- E <- F

after git rebase master

1
A <- B <- C <- D' <- E'

其实,这里rebase的线性,是指在当前branch上是线性的,其中带’ (撇号)的commit并没有被同步到master上,仍然在branch上。
下面的图更好一点:

1
2
3
D'--E' topic
/
A---B---C master

另外两个相关的命令是: git pull和 git pull –rebase。
这两个的区别在于前者是git fetch + git merge,后者是git fetch + git rebase。

什么时候使用merge,什么时候用rebase呢?
推荐一个地址: http://***.com/questions/804115/when-do-you-use-git-rebase-instead-of-git-merge

里面有详细的解释:

1
2
3
4
Merge
Let's say you have created a branch for the purpose of developing a single feature. When you want to bring those changes back to master, you probably want merge (you don't care about maintaining all of the interim commits).
Rebase
A second scenario would be if you started doing some development and then another developer made an unrelated change. You probably want to pull and then rebase to base your changes from the current version from the repo.

翻译一下:

1
2
3
4
Merge
你要单独创建一个特性分支用来开发新特性,一旦你想把你修改的内容带到master分支上,你可能需要使用merge操作。(你不用关心任何临时提交)
Rebase
另外一个情况是你和其他同事一起在这个分支上做了变更,但是都不想管,这时候你可能想pull代码然后改变base为repo的当前版本,这时候使用rebase操作最合适了

git修改已提交了的注释


当你不小心,写错了提交的注视/信息,该如何处理呢。理论上,SCM是不应该修改历史的信息的,提交的注释也是。不过在git中,其commit提供了一个–amend参数,可以修改最后一次提交的信息.但是如果你已经push过了,那么其历史最后一次,永远也不能修改了。
下面的命令只能对最后一次的提交进行修改:

$ git commit --amend

对于历史提交,得使用rebase了

$ git rebase -i HEAD~3

表示要修改当前版本的倒数第三次状态。
这个命令出来之后,会出来三行东东:
pick:*
pick:*
pick:*
如果你要修改哪个,就把那行的pick改成edit,然后退出。
这时通过git log你可以发现,git的最后一次提交已经变成你选的那个了,这时再使用:

$ git commit -amend 

来对commit进行修改。
修改完了之后,要回来对不对?
使用下面的命令:

$ git rebase --continue 

OK,一切都搞定了。