Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1036706
  • 博文数量: 164
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1336
  • 用 户 组: 普通用户
  • 注册时间: 2016-03-11 14:13
个人简介

狂甩酷拽吊炸天

文章分类

全部博文(164)

文章存档

2023年(1)

2022年(3)

2021年(4)

2020年(17)

2019年(37)

2018年(17)

2017年(35)

2016年(50)

分类: LINUX

2019-12-10 11:03:43

Git命令大全

git config

配置 Git 的相关参数。

Git 一共有3个配置文件:

1. 仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效。
2. 全局配置文件:Mac 系统在 ~/.gitconfig,Windows 系统在 C:\Users\<用户名>\.gitconfig。
3. 系统级的配置文件:在 Git 的安装目录下(Mac 系统下安装目录在 /usr/local/git)的 etc 文件夹中的 gitconfig。


点击(此处)折叠或打开

  1. # 查看配置信息
  2. # --local:仓库级,--global:全局级,--system:系统级
  3. $ git config <--local | --global | --system> -l

  4. # 查看当前生效的配置信息
  5. $ git config -l

  6. # 编辑配置文件
  7. # --local:仓库级,--global:全局级,--system:系统级
  8. $ git config <--local | --global | --system> -e

  9. # 添加配置项
  10. # --local:仓库级,--global:全局级,--system:系统级
  11. $ git config <--local | --global | --system> --add <name> <value>

  12. # 获取配置项
  13. $ git config <--local | --global | --system> --get <name>

  14. # 删除配置项
  15. $ git config <--local | --global | --system> --unset <name>

  16. # 配置提交记录中的用户信息
  17. $ git config --global user.name <用户名>
  18. $ git config --global user.email <邮箱地址>

  19. # 更改Git缓存区的大小
  20. # 如果提交的内容较大,默认缓存较小,提交会失败
  21. # 缓存大小单位:B,例如:524288000(500MB)
  22. $ git config --global http.postBuffer <缓存大小>

  23. # 调用 git status/git diff 命令时以高亮或彩色方式显示改动状态
  24. $ git config --global color.ui true

  25. # 配置可以缓存密码,默认缓存时间15分钟
  26. $ git config --global credential.helper cache

  27. # 配置密码的缓存时间
  28. # 缓存时间单位:秒
  29. $ git config --global credential.helper 'cache --timeout=<缓存时间>'

  30. # 配置长期存储密码
  31. $ git config --global credential.helper store

git clone

从远程仓库克隆一个版本库到本地。


点击(此处)折叠或打开

  1. # 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
  2. $ git clone <远程仓库的网址>

  3. # 指定本地仓库的目录
  4. $ git clone <远程仓库的网址> <本地目录>

  5. # -b 指定要克隆的分支,默认是master分支
  6. $ git clone <远程仓库的网址> -b <分支名称> <本地目录>

git init

初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。

点击(此处)折叠或打开

  1. # 初始化本地仓库,在当前目录下生成 .git 文件夹
  2. $ git init

git status

查看本地仓库的状态。


点击(此处)折叠或打开

  1. # 查看本地仓库的状态
  2. $ git status

  3. # 以简短模式查看本地仓库的状态
  4. # 会显示两列,第一列是文件的状态,第二列是对应的文件
  5. # 文件状态:A 新增,M 修改,D 删除,?? 未添加到Git中
  6. $ git status -s

git remote

操作远程库。


点击(此处)折叠或打开

  1. # 列出已经存在的远程仓库
  2. $ git remote

  3. # 列出远程仓库的详细信息,在别名后面列出URL地址
  4. $ git remote -v
  5. $ git remote --verbose

  6. # 添加远程仓库
  7. $ git remote add <远程仓库的别名> <远程仓库的URL地址>

  8. # 修改远程仓库的别名
  9. $ git remote rename <原远程仓库的别名> <新的别名>

  10. # 删除指定名称的远程仓库
  11. $ git remote remove <远程仓库的别名>

  12. # 修改远程仓库的 URL 地址
  13. $ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>

git branch

操作 Git 的分支命令。


点击(此处)折叠或打开

  1. # 列出本地的所有分支,当前所在分支以 "*" 标出
  2. $ git branch

  3. # 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
  4. $ git branch -v

  5. # 创建新分支,新的分支基于上一次提交建立
  6. $ git branch <分支名>

  7. # 修改分支名称
  8. # 如果不指定原分支名称则为当前所在分支
  9. $ git branch -m [<原分支名称>] <新的分支名称>
  10. # 强制修改分支名称
  11. $ git branch -M [<原分支名称>] <新的分支名称>

  12. # 删除指定的本地分支
  13. $ git branch -d <分支名称>

  14. # 强制删除指定的本地分支
  15. $ git branch -D <分支名称>

git checkout

检出命令,用于创建、切换分支等。


点击(此处)折叠或打开

  1. # 切换到已存在的指定分支
  2. $ git checkout <分支名称>

  3. # 创建并切换到指定的分支,保留所有的提交记录
  4. # 等同于 "git branch""git checkout" 两个命令合并
  5. $ git checkout -b <分支名称>

  6. # 创建并切换到指定的分支,删除所有的提交记录
  7. $ git checkout --orphan <分支名称>

  8. # 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
  9. $ git checkout <文件路径>


git cherry-pick

把已经提交的记录合并到当前分支。


点击(此处)折叠或打开

  1. # 把已经提交的记录合并到当前分支
  2. $ git cherry-pick <commit ID>
  3. # 把已经提交的记录合并到当前分支
  4. $ git cherry-pick <commit ID>

git add

把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交。


点击(此处)折叠或打开

  1. # 把指定的文件添加到暂存区中
  2. $ git add <文件路径>

  3. # 添加所有修改、已删除的文件到暂存区中
  4. $ git add -u [<文件路径>]
  5. $ git add --update [<文件路径>]

  6. # 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
  7. $ git add -A [<文件路径>]
  8. $ git add --all [<文件路径>]

  9. # 查看所有修改、已删除但没有提交的文件,进入一个子命令系统
  10. $ git add -i [<文件路径>]
  11. $ git add --interactive [<文件路径>]

git commit

将暂存区中的文件提交到本地仓库中。


点击(此处)折叠或打开

  1. # 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
  2. $ git commit

  3. # 把暂存区中的文件提交到本地仓库中并添加描述信息
  4. $ git commit -m "<提交的描述信息>"

  5. # 把所有修改、已删除的文件提交到本地仓库中
  6. # 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
  7. $ git commit -a -m "<提交的描述信息>"

  8. # 修改上次提交的描述信息
  9. $ git commit --amend

git fetch

从远程仓库获取最新的版本到本地的 tmp 分支上。


点击(此处)折叠或打开

  1. # 将远程仓库所有分支的最新版本全部取回到本地
  2. $ git fetch <远程仓库的别名>

  3. # 将远程仓库指定分支的最新版本取回到本地
  4. $ git fetch <远程主机名> <分支名>

git merge

合并分支。


点击(此处)折叠或打开

  1. # 把指定的分支合并到当前所在的分支下
  2. $ git merge <分支名称>


git diff

比较版本之间的差异。


点击(此处)折叠或打开

  1. # 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
  2. $ git diff

  3. # 比较暂存区中的文件和上次提交时的差异
  4. $ git diff --cached
  5. $ git diff --staged

  6. # 比较当前文件和上次提交时的差异
  7. $ git diff HEAD

  8. # 查看从指定的版本之后改动的内容
  9. $ git diff <commit ID>

  10. # 比较两个分支之间的差异
  11. $ git diff <分支名称> <分支名称>

  12. # 查看两个分支分开后各自的改动内容
  13. $ git diff <分支名称>...<分支名称>

git pull

从远程仓库获取最新版本并合并到本地。
首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。


点击(此处)折叠或打开

  1. # 从远程仓库获取最新版本。
  2. $ git pull

git push

把本地仓库的提交推送到远程仓库。



点击(此处)折叠或打开

  1. # 把本地仓库的分支推送到远程仓库的指定分支
  2. $ git push <远程仓库的别名> <本地分支名>:<远程分支名>

  3. # 删除指定的远程仓库的分支
  4. $ git push <远程仓库的别名> :<远程分支名>
  5. $ git push <远程仓库的别名> --delete <远程分支名>


git log

显示提交的记录。


点击(此处)折叠或打开

  1. # 打印所有的提交记录
  2. $ git log

  3. # 打印从第一次提交到指定的提交的记录
  4. $ git log <commit ID>

  5. # 打印指定数量的最新提交的记录
  6. $ git log -<指定的数量>


git reset

还原提交记录。


点击(此处)折叠或打开

  1. # 重置暂存区,但文件不受影响
  2. # 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件
  3. # 没有指定 commit ID 则默认为当前 HEAD
  4. $ git reset [<文件路径>]
  5. $ git reset --mixed [<文件路径>]

  6. # 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
  7. $ git reset <commit ID>
  8. $ git reset --mixed <commit ID>

  9. # 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
  10. # 相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
  11. $ git reset --soft <commit ID>

  12. # 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
  13. $ git reset --hard <commit ID>

git revert

生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。


点击(此处)折叠或打开

  1. # 生成一个新的提交来撤销某次提交
  2. $ git revert <commit ID>


git tag

操作标签的命令。


点击(此处)折叠或打开

  1. # 打印所有的标签
  2. $ git tag

  3. # 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
  4. $ git tag <标签名称> [<commit ID>]

  5. # 添加带有描述信息的附注标签,可以指定之前的提交记录
  6. $ git tag -a <标签名称> -m <标签描述信息> [<commit ID>]

  7. # 切换到指定的标签
  8. $ git checkout <标签名称>

  9. # 查看标签的信息
  10. $ git show <标签名称>

  11. # 删除指定的标签
  12. $ git tag -d <标签名称>

  13. # 将指定的标签提交到远程仓库
  14. $ git push <远程仓库的别名> <标签名称>

  15. # 将本地所有的标签全部提交到远程仓库
  16. $ git push <远程仓库的别名> –tags

git mv

重命名文件或者文件夹。


点击(此处)折叠或打开

  1. # 重命名指定的文件或者文件夹
  2. $ git mv <源文件/文件夹> <目标文件/文件夹>

git rm

删除文件或者文件夹。


点击(此处)折叠或打开

  1. # 移除跟踪指定的文件,并从本地仓库的文件夹中删除
  2. $ git rm <文件路径>

  3. # 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
  4. $ git rm -r <文件夹路径>

  5. # 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
  6. $ git rm --cached

删除掉本地不存在的远程分支

多人合作开发时,如果远程的分支被其他开发删除掉,在本地执行 git branch --all 依然会显示该远程分支,可使用下列的命令进行删除:


点击(此处)折叠或打开

  1. # 使用 pull 命令,添加 -p 参数
  2. $ git pull -p

  3. # 等同于下面的命令
  4. $ git fetch -p
  5. $ git fetch --prune origin

将未提交的代码放到暂存区

1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。
2 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。

点击(此处)折叠或打开

  1. $ git status
  2. On branch master
  3. Changes not staged for commit:
  4.   (use "git add ..." to update what will be committed)
  5.   (use "git checkout -- ..." to discard changes in working directory)

  6.         modified: src/main/java/com/wy/CacheTest.java
  7.         modified: src/main/java/com/wy/StringTest.java

  8. no changes added to commit (use "git add" and/or "git commit -a")

  9. $ git stash
  10. Saved working directory and index state WIP on master: b2f489c second

  11. $ git status
  12. On branch master
  13. nothing to commit, working tree clean
  14. git stash save
  15. 作用等同于git stash,区别是可以加一些注释,git stash的效果:
  16. stash@{0}: WIP on master: b2f489c second
  17. git stash save “test1”的效果:
  18. stash@{0}: On master: test1

  19. git stash list
  20. 查看当前stash中的内容

  21. git stash pop
  22. 将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。
  23. 注:该命令将堆栈中最近保存的内容删除(栈是先进后出)
  24. $ git stash list
  25. stash@{0}: On master: test2
  26. stash@{1}: On master: test1

  27. $ git stash pop
  28. On branch master
  29. Changes not staged for commit:
  30.   (use "git add ..." to update what will be committed)
  31.   (use "git checkout -- ..." to discard changes in working directory)

  32.         modified: src/main/java/com/wy/StringTest.java

  33. no changes added to commit (use "git add" and/or "git commit -a")
  34. Dropped refs/stash@{0} (afc530377eacd4e80552d7ab1dad7234edf0145d)

  35. $ git stash list
  36. stash@{0}: On master: test1
  37. og.csdn.net/stone_yw/article/details/80795669

  38. git stash apply
  39. 将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
  40. $ git stash apply
  41. On branch master
  42. Changes not staged for commit:
  43.   (use "git add ..." to update what will be committed)
  44.   (use "git checkout -- ..." to discard changes in working directory)

  45.         modified: src/main/java/com/wy/StringTest.java

  46. no changes added to commit (use "git add" and/or "git commit -a")

  47. $ git stash list
  48. stash@{0}: On master: test2
  49. stash@{1}: On master: test1


  50. git stash drop + 名称
  51. 从堆栈中移除某个指定的stash

  52. git stash clear
  53. 清除堆栈中的所有 内容

  54. git stash show
  55. 查看堆栈中最新保存的stash和当前目录的差异。
  56. $ git stash show
  57.  src/main/java/com/wy/StringTest.java | 2 +-
  58.  1 file changed, 1 insertion(+), 1 deletion(-)

  59. git stash show stash@{1}查看指定的stash和当前目录差异。
  60. 通过 git stash show -p 查看详细的不同:

  61. $ git stash show -p
  62. diff --git a/src/main/java/com/wy/CacheTest.java b/src/main/java/com/wy/CacheTest.java
  63. index 6e90837..de0e47b 100644
  64. --- a/src/main/java/com/wy/CacheTest.java
  65. +++ b/src/main/java/com/wy/CacheTest.java
  66. @@ -7,6 +7,6 @@ package com.wy;
  67.   */
  68.  public class CacheTest {
  69.      public static void main(String[] args) {
  70. - System.out.println("git stash test");
  71. + System.out.println("git stash test1");
  72.      }
  73.  }
  74. diff --git a/src/main/java/com/wy/StringTest.java b/src/main/java/com/wy/StringTest.java
  75. index a7e146c..711d63f 100644
  76. --- a/src/main/java/com/wy/StringTest.java
  77. +++ b/src/main/java/com/wy/StringTest.java
  78. @@ -12,7 +12,7 @@ public class StringTest {

  79.      @Test
  80.      public void test1() {
  81. - System.out.println("=================");
  82. + System.out.println("git stash test1");
  83.          System.out.println(Strings.isNullOrEmpty(""));//true
  84.          System.out.println(Strings.isNullOrEmpty(" "));//false
  85.          System.out.println(Strings.nullToEmpty(null));//""


  86. git stash branch
  87. 从最新的stash创建分支。
  88. 应用场景:当储藏了部分工作,暂时不去理会,继续在当前分支进行开发,后续想将stash中的内容恢复到当前工作目录时,如果是针对同一个文件的修改(即便不是同行数据),那么可能会发生冲突,恢复失败,这里通过创建新的分支来解决。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。
  89. 发生冲突时,需手动解决冲突。




阅读(6879) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~