常用git操作备忘

对常用指令进行总结,方便以后遇到相同情况时查阅。

1 撤销与回退相关

1.1 修正最近的提交消息

情景 :在最近的一次提交( git commit )中输入的信息有误,并且这次提交没有被推送( git push )到远程仓库。
方法git commit --amendgit commit --amend -m "correct_message"
说明git commit --amend 会使用一个新的提交更新并替换最近的一次提交,如果有在临时区域(staged)的修改,也会合并提交;如果有新的提交信息,则会一并提交。

1.2 撤销本地变更

情景 :当无意中修改了一个文件,想要回退这个文件的修改时。
方法git checkout -- <filename>
说明 :这条指令会把该文件回退到某个git记录中的版本,git默认会回退到 HEAD 版本。

1.3 重置本地修改

情景 :已经进行了多次提交,但是没有推送到版本库中,希望撤销这些提交。
方法git reset <last good SHA>git reset --hard <last good SHA>
说明git reset 会把本地代码恢复到没有提交( git commit )的状态,做出的修改会保留。 git reset --hard 会把这些修改丢弃掉。

1.4 恢复被重置的本地修改

情景 :在按照1.3中操作后,想恢复重置以前的状态。
方法git reflog 后执行 git resetgit checkout
说明git reflog 会呈现所有提交过的历史,是一个十分实用的功能。

2 分支操作相关

2.1 创建一个本地分支并推送到远端

方法

git branch branch_name
git push origin branch_name

2.2 在本地创建一个远程分支

方法

git fetch origin
git checkout -b branch_name origin/branch_name

2.3 在分支上进行进度迁移

情景 : 进行了几次提交后,发现自己正在错误的分支上干活。
方法

git branch feature
git reset --hard origin/master
git checkout feature

原理 : 使用feature分支复制了当前分支,将当前分支回退到初始状态,在feature分支上接着干活。

3 git submodule 相关操作

3.1 向当前repo中增加一个submodule

git submoudle add <module url> <local path>

3.2 初始化submodule

在将一个具有submodule的repo拉取到本地以后需要对submodule进行初始化

git submodule init

3.3 更新submodule

在开发中可以直接进入submodule的目录对每一个submodule执行更新操作,也可以使用命令统一完成submodule的更新操作。

git submodule update

3.4 删掉submodule

对于不需要的submodule,可以将其删掉。

git submodule rm <local/path>

4 终端配置

使用命令简称方便操作,可以将以下配置加入到 .bashrc 中。

# git related
alias g='git status --short -b'
alias ga='git add'
alias gb='git branch'
alias gc='git commit -m'
alias gd='git diff'
alias gco='git checkout'
alias gps='git push'
alias gpl='git pull'

(全文完)

Comments

Comments powered by Disqus