Git常用指令汇总

提交到版本库:git commit

切换到新分支:git checkout -b newBranch

合并分支:git merge xxx

单线合并:git rebase xxx

*HEAD 是一个对当前检出记录的符号引用,总是指向当前分支上最近一次提交记录
cat .git/HEAD 或者git symbolic-ref HEAD查看HEAD的指向
HEAD可以分离,指向某一commit

查看提交记录的哈希值:git log

相对引用:1.使用 ^ 向上移动 1 个提交记录;2.使用 ~ 向上移动多个提交记录,如 ~3
将 master 分支强制指向 HEAD 的第 3 级父提交:git branch -f master HEAD~3

撤销改动:git reset HEAD^
远程撤销改动,但会提交一个commit,然后再push就可以同步远程撤销:git revert
将一些提交复制到当前所在的位置(HEAD):git cherry-pick commitid commitid

交互式rebase,修改commit的顺序、合并方式:git rebase -i HEAD~4(commitid)

修改commit:git commit --amend

建立标签:git tag tagname commitId
命令用来描述离你最近的锚点(也就是标签):git describe (提交的引用)

多个父节点选择^:git checkout master^n(从右到左第几)

克隆远程分支:git clone
你的远程仓库默认为 origin,本地仓库多了一个名为 o/master 的分支, 这种类型的分支就叫远程分支,远程分支反映了远程仓库(在你上次和它通信时)的状态,远程分支有一个特别的属性,在你检出时自动进入分离 HEAD 状态。

从远程仓库获取数据时, 远程分支也会更新以反映最新的远程仓库:git fetch
git fetch 完成了仅有的但是很重要的两步:

  1. 从远程仓库下载本地仓库中缺失的提交记录
  2. 更新远程分支指针(如 o/master)

git fetch 和 git merge 的缩写:git pull

推送到远程:git push
*git push 不带任何参数时的行为与 Git 的一个名为 push.default 的配置有关。
推送标准公式:
git fetch; git rebase o/master; git push=》git pull --rebase; git push

远程跟踪:master 和 o/master 的关联关系就是由分支的“remote tracking”属性决定的。当你克隆仓库的时候, Git 就自动帮你把这个属性设置好了。
当你克隆时, Git 会为远程仓库中的每个分支在本地仓库中创建一个远程分支(比如 o/master)。然后再创建一个跟踪远程仓库中活动分支的本地分支,默认情况下这个本地分支会被命名为 master。

通过远程分支检出一个新的分支:git checkout -b localbranchname origin/master
设置远程追踪分支:git branch -u origin/master foo

为 push 指定参数:git push
把本地的 foo 分支推送到远程仓库中的 bar 分支:
git push origin :

为 fetch指定参数git fetch
git fetch origin :,source 现在指的是远程仓库中的位置,而 才是要放置提交的本地仓库的位置。它与 git push 刚好相反,git pull同理

古怪的

  1. 可以在 git push 或 git fetch 时不指定任何 source,方法就是仅保留冒号和 destination 部分,source 部分留空。
    git push origin :side 删除目的分支
    git fetch origin :bugFix 新建一个分支

你可能感兴趣的:(Git常用指令汇总)