linux下使用git的常用命令行

1. 常用的命令行

1.1 克隆git仓库

-

Bash 代码

1 git clone repo_address

 

1.2 创建分支,取个相关的名字

master是当前分支:

-

Bash 代码

1 git checkout -b feature_a

master不是当前分支:

-

Bash 代码

1 git checkout -b feature_a master

使用checkout -b,在创建分支后,会自动切换到对应分支  

 

1.3 修改/提交代码

查看当前修改状态:   

-

Bash 代码

1 git status

 添加所有修改文件(无删除文件):

-

Bash 代码

1 git add .

添加所有修改文件(有删除文件):

-

Bash 代码

1 git add --all

添加指定文件:

-

Bash 代码

1 git add the/file/path

添加已忽略文件:

-

Bash 代码

1 git add -f the/file/path

提交,在弹出的编辑器中编写提交记录

-

Bash 代码

1 git commit

修改最后一个提交(可以增删文件,修改文件内容,修改提交信息等等)

-

Bash 代码

1 git commit --amend

 

1.4 同步库上代码  

 

-

Bash 代码

1 git fetch upstream master & git rebase upstream/master

如果产生冲突,解决冲突并继续rebase。(这里没有展开讲,细节比较多)

 

1.5 推上fork库

-

Bash 代码

1 git push origin feature_a

如果fork上没有feature_a分支,这步操作会在fork上创建feature_a分支

 

1.6 在fork库上,基于feature_a分支提交pull request 

网站上操作

 

1.7 pull request被合入后的处理

1.7.1 将最新代码同步到master分支(包括本地库和fork库)

-

Bash 代码

1 git checkout master
2 git fetch upstream master & git rebase upstream/master
3 git push origin master

1.7.2 打扫战场,删除不用的分支

删除fork上的feature_a,以及本地对应的remote/feature_a分支

-

Bash 代码

1 git push origin :feature_a

删除本地的feature_a分支

-

Bash 代码

1 git branch -d feature_a

 

1.8 重复1,处理下一个特性/issue

在1~6中间,也可以随时打断。重新进行1~6,开发其它特性如果有未提交代码,简单处理可以先提交,再拉新分支开发

 

2. 常用的命令别名

        git有些命令行死长死长的,比如"git fetch upstream master & git rebase upstream/master"。所以定义一些自己习惯的别名还是很有必要的。当然有些别名缩写为了尽量减少输入量,可能导致命令含义不是特别清晰,这个东东仁者见仁,仅供参考。

        git自带的别名系统主要通过 'git config --global alias.name cmd' 来添加,增加的别名保存在$HOME/.gitconfig文件中。       

        增加的别名使用方法和git自带命令相同 - 'git alias_name parameter'。而且也可以使用tab实现命令和参数的自动补全。

 

2.1 查看最近三次的提交记录

-

Bash 代码

1 git config --global alias.last 'log -3 HEAD'

 

2.2 同步上游最新代码

-

Bash 代码

1 git config --global alias.sync '!git fetch upstream master && git rebase upstream/master'

 

2.3 以master为基准,创建新分支,并自动切换到新分支

-

Bash 代码

1 git config --global alias.nb '!git checkout -b $1 master && :'

 

2.4 删除本地分支,删除对应远端分支以及fork库上的对应分支

-

Bash 代码

1 git config --global alias.db '!git checkout -q master && git branch -d $1 && git push origin :$1 && :'

 

        对于带参数的别名,有一个技巧,在最后需要加上' && :'。这是解析参数的机制导致,原理就不详述了。

 

3. linux的bash下显示当前分支

        Windows下的git bash有一个很友好的特性,进入git仓库目录后,会显示当前分支。linux下默认没有这个特性,不过我们可以自己加上。

 

        原理是增加一个查询当前分支的函数,然后定制bash的PS1,即命令提示符。在~/.bashrc中增加

-

Bash 代码

1 function parse_git_branch_and_add_brackets {
2     git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\[\1\]/'
3 }
4 PS1="\h@\u:\w\[\033[0;32m\]\$(parse_git_branch_and_add_brackets)\[\033[0m\]\$ "

        效果如下:

你可能感兴趣的:(git)