基础命令

远程仓库命令

获取远端修改

git fetch <remote> <place>
git fetch origin <source>:<destination>

git fetch将本地仓库的origin/master更新至远程仓库,但是并不会改变你本地仓库的状态。它不会更新你的 master 分支,也不会修改你磁盘上的文件。

拉取远端修改并合并

git pull

git pull是 git fetch 和 git merge 的缩写

提交修改

git push <remote> <place>
git push origin <source>:<destination>

创建提交记录

git commit  

创建新分支

git branch <your-branch-name> <commit>  # commit省略为HEAD
git checkout -b <your-branch-name>  # 切换并新建分支

# 将 master 分支强制指向 某个commit/branch 或者 相对位置
git branch -f master HEAD~3
git branch -f master origin/master

合并分支

在master下合并dev分支,创建一个新的commit,保留两个分支的所有修改,保留master分支树的形态。

git merge

合并为线性分支

将dev分支下的所有commit内容复制保留,并合并到master分支,使得整个master分支呈线性记录,这也是使用rebase(变基)的主要原因。

git rebase <upstream-branch> <to-branch> # 被合并分支默认为当前分支

指定HEAD到提交记录

git checkout <commit>

# 指定head到master上一个commit
git checkout master^

# 指定head到上n个commit
git checkout ~n

撤销变更

git reset HEAD^   # 撤销到上一个commit,本地分支使用
git revert HEAD # 远程分支使用,撤销当前commit

移动commit

可以提取某次有用的修改;或者需要修改历史上的某次修改,可以将某个commit提取到head进行修改,再修改顺序将其放回原位置。

# 将某个commit复制到当前HEAD
git cherry-pick <提交号>...

# 交互式 rebase
git rebase -i HEAD~4

标签

git tag 

查看状态与记录

git status
git log

跟踪origin/master

设置foo分支跟踪origin/master

git checkout -b foo origin/master
# 或者
git branch -u o/master foo

使用场景

远端master代码改动时,更新dev分支

# 更新master分支到远程
git checkout master
git pull

# 将master分支的修改合并到dev
git checkout dev
git merge master

# push最新的dev分支
git push -u origin dev

远端master代码改动时,更新master分支

使用merge合并

# 将远端的master拉取到本地
git pull
# 将dev分支到master
git merge dev
# 若有冲突
git add .
git rebase --continue

使用rebase保持master的线性,git pull –rebase相当于fetch和rebase的简写

# 将远端的master拉取到本地
git pull

# 将dev分支rebase到master
git checkout dev
git rebase master

# 若有冲突
git add .
git rebase --continue

# 更新master
git checkout master
git rebase dev

上线最新的dev代码到master

# 获取最新的dev分支
git checkout dev
git pull

# 将dev分支合并至master分支
git checkout master
git merge dev

# 更新远端master分支
git push -u origin master

Ref. GitHub 漫游指南, Git教程 – 廖雪峰

分类: 软件工程

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注