Git学习

记录一些在开发过程中使用到的git用法

Git真的是太常用了,不会用git真的真的不能算是一个合格的程序员。特地写一篇文章记录开发过程中使用过的git技巧。

没有排版,姑且按照时间顺序记录吧…

分支的使用

先来明确一下,HEAD可以理解为指向当前所显示的代码的“指针”,一般指向分支,标记当前分支所显示的commit。 在使用git log时,就可以发现(HEAD -> branch-name)可以指向多个分支。另外,本地仓库和远程仓库(比如GitHub)是两个仓库

一般新创建的的项目,会有一个默认的本地分支master,还有可能有一个远程分支remote/origin/master对应远程仓库。使用git branch -a可以发现本地分支和远程分支名字是不一样的,明显远程分支名会多了“remote/origin”。你可以git checkout remote/origin/*然后当成本地分支一样修改,提交,不过不建议,最好在checkout后直接新建一个分支,这样比较好管理。

一般执行git push时是默认本地master到远程master。但亦可以自行指定本地分支和远程分支(两者的名字没有要求,可以没有任何联系):

git push origin local-new-branch:new-branch

此时git branch -a的结果:

* local-new-branch
  master
  remotes/origin/master
  remotes/origin/new-branch

如果在某个分支上有多次提交时,可能会提示错误,一般可以这样做:

# 第一次使用时需要
git branch --set-upstream-to=origin/new-branch local-new-branch
git push origin HEAD:new-branch

删除中间的提交

假设有commit1, commit2, commit3, commit4四个提交,你想保留代码但是删除中间的commit2, commit3(有时就是你想记录改bug的思路,后来整明白了就不想留着中间可能存在的无数个提交…),可以这样:

# 先移动HEAD,n是向前移动的提交数,上述例子为3
# 注意不要使用--hard,这样会清掉代码的。
git reset --soft HEAD~n
# 然后提交
git commit
# 如果远程仓库也想更新
git push --force

换基

一般出现在当前分支的父分支有更新时,本地没来得及更新就更改了代码,可以使用git rebase

建议不要用于商业用途, 转载请注明原文地址: https://Soo-Q6.github.io/blog/2019-10-30-git/


© 2019. All rights reserved.

Powered by shouqin v1.0