Git命令行

刘超 16天前 ⋅ 4509 阅读   编辑

目录

    1、参数

    2、别名

    3、命令

   

一、参数

  1、查看git版本

$ git --version
git version 2.15.1.windows.2

二、别名

# 格式化日志输出

alias glo='git log --oneline --decorate --graph'

# 格式化高亮展示提交者等

alias gl='git log --oneline --decorate --graph --pretty="%Cgreen%cd%Creset %Cred%h%Creset %Cblue%cn%Creset %s" --date=short'

alias gcl='git clean -dfx'

alias gr='git reset --hard'

alias gb='git branch -vv --color'

alias ga='git add'

alias gs='git status'

alias gc='git checkout'

alias gcm='git commit -m'

alias gcp='git cherry-pick'

alias gf='git fetch'

alias gfo='git fetch origin'

alias gfc='git fetch critic'

alias gd='git diff --color'

alias gdc='git diff --cached --color'

alias gpl='git pull'

alias gps='git push'

alias gpo='git push origin'

alias gpc='git push critic'

三、命令

  启动图形化

gitk

  1、status

  git status命令会显示当前git仓库的状态,包括:你当前位于哪个分支,你的哪些文件有改动,以及接下来建议你做哪些操作

  1、add

  git add命令将文件加入到暂存区。可以先理解为,git add之后,就将该文件加入了提交列表

    git add *

  2、pull

git pull <远程库名> <远程分支名>:<本地分支名>  

-- 取回远程库中的fluctuation分支,与本地的fluctuation分支进行merge,要写成:
git pull origin fluctuation:fluctuation

  3、clean

  Git的2.11和更新

  git clean -d -f .

  git clean -f '/path/to/file/'

  较老的git

  git clean -d -f ""

 参数:

  -x意味着忽略的文件也将被删除的文件以及未知的饭桶。
  -d手段删除除未跟踪文件未跟踪目录。
  -f来强制其运行。

  4、fetch

git fetch --all

  5、reset撤销提交

git reset commit_id/HEAD@{27}:撤销时不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改
git reset --soft :此次提交之后的修改会被退回到暂存区。
git reset --hard commit_id/HEAD@{27}:此次提交之后的修改不做任何保留

  6、push

git push命令用来进行一次提交

git push --set-upstream origin tb/ADX-1024/1

删除远程分支,演示见这里

git push origin --delete <分支名> # 前面加--delete与加: 含义一样

git push origin :<分支名>

强制推送分支,演示见这里

git push -f # 强制推送当前分支

git push origin +<分支名> # 强制推送某分支

  7、log

  git log 命令用于查看提交历史

git log -p -- 文件:查看文件历史记录

  参数

  --author="Jichao Liu"  指定作者

  --grep='所需要查找的字符' ,只能搜索comment字符

  示例

  7、reflog

    示例

  8、blame

  查看提交记录

git blame 文件名:查看文件的全部提交记录

git blame -L 开始行号,结束行好 文件名:查看文件指定范围的提交记录(和下面这命令等价)

git blame -L 开始行号,+长度 Ref.java :查看文件指定范围的提交记录

例子

  9、stash

  保存和恢复进度

  10、diff 

  解释:对比文件差异

  示例:git diff比较两个分支的文件差异

  示例:对比两commitid的差异并排除某类文件(参考这里

git diff f97ecc8 5687e97  -- ':!*.json'    

  11、difftool

git diff显示行号

  11、checkout

  命令:

git checkout 参数 分支名

git checkout ${commit} /path/to/file

  解释:用于查看、创建、切分分支

  参数:

    -f:用于解决 (Please move or remove them before you switch branches)等异常

    -b:用于创建分支

  示例

创建、切换分支

# 切换到master分支
git checkout -f master  

// tb/ADX-1015/1不存在,则创建

git checkout -b tb/ADX-1015/1

某文件还原到到指定commit时的状态(操作后即是不同分支,也会还原这个commit状态)

将doc/sql/ad_bi.sql还原到3fec326b时的状态(查看有哪些commitid
git checkout 3fec326b doc/sql/ad_bi.sql

  12、rebase(变基操作)

  1)命令:

git rebase -i commitid
git rebase -i commitid ~ 数字
git rebase -i commitid[^]*
git rebase -i HEAD[^]*
git rebase -i HEAD ~ 数字

  2)参数:

-i:表示进入交互模式

  3)说明:可以对某一段线性提交历史进行编辑、删除、复制、粘贴、合并,可以用commitid ~ n或commitid^^这种形式:前者表示当前提交到n次以前的提交,后者^符号越多表示的范围越大,commit可以是HEAD或者某次提交的hash值;

    注意:

    a、变基命令打开的文本编辑器中的commit顺序跟git log查看的顺序是相反的,也就是最近的提交在下面,老旧的提交在上面

    b、变基命令其实可以同时对多个提交进行修改,只需要修改将对应行前的pick都修改为edit,保存退出后会根据你修改的数目多次打开修改某次commit的文本编辑器界面。但是这个范围内的最终祖先commit不能修改,也就是如果有5行commit信息,你只能修改下面4行的,这不仅限于commit修改,重排、删除以及合并都如此。

  4)示例:  

git rebase -i 72d1bc32

  13、branch

  删除本地分支

  git branch -D  分支

  示例如下

  

  删除远程分支,见push

  14、grep

命令

git grep -n "Content" :搜索当前目录下所有文件是否包含指定内容

git grep -n "Content"  fileName:搜索指定文件是否包含指定内容

git grep --count "Content"  fileName:搜索指定内容在指定文件中出现了几次

git grep -e "正则1" --or -e "正则2":从当前目录下检索符合正则1的或者符合正则2的

git grep -e "正则1" --and -e "正则2":从当前目录下检索符合正则1且符合正则2的

git grep -e "正则1" --and \(  -e "正则2" --or -e "正则3" \):从当前目录下检索 “符合正则1且符合正则2的” 或者 “符合正则1且符合正则3的”

git grep -e "正则1" --and \(  -e "正则2" --or  --not -e "正则3" \):从当前目录下检索 “符合正则1且符合正则2的” 或者 “符合正则1且不符合正则3的”

git grep -e "正则1" --and -e "正则2" HEAD~:搜索HEAD~版本中的当前目录下符合正则1且符合正则2的

示例

  15、shortlog

统计每个人提交次数

git shortlog -sn

  16、ls-files

git ls-files --error-unmatch .gitignore

  17、merge

合并tb/ADX-1981/1分支到master

先切换到master分支(git checkout master)

再执行git merge tb/ADX-1981/1

18、commit

修改commit的描述内容
git commit --amend

19、cherry-pick

命令

git cherry-pick commitid

示例

[/Workspace/adx]$ git cherry-pick 7ad7233a2                                                                                                 *[tb/ADX-3518/2] 
[tb/ADX-3518/2 53b7ae0a7] ADX-3518:urvey/polls/leads data table
 Date: Wed Mar 11 16:08:20 2020 +0800
 3 files changed, 108 insertions(+), 5 deletions(-)

20、update-index 

命令

  git update-index --assume-unchanged /path/to/file       #忽略跟踪

  git update-index --no-assume-unchanged /path/to/file  #恢复跟踪

示例

 忽略.gitignore本身

21、rm

命令

  git rm

说明

  用git rm删除文件,同时还会将这个删除操作记录下来;用rm删除文件,删除的仅仅是本地物理文件,没有将其从 git的记录中剔除。git add 和 git rm 有相似的功能,但git add仅能记录添加、改动的动作,删除的动作需靠git rm 来完成。

22、show


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: