Git常用命令

git init

  git init 该命令创建一个.git目录,这个目录包含必要的文件。但是此时工程中的文件还没有被跟踪,需要通过git add添加跟踪文件.

git status

  git status 查看哪些修改的文件已经暂存了,哪些修改的文件没有暂存,哪些文件没有被追踪,如下所示:

git diff

  1. git diff 查看工作区里所有的修改了的文件与暂存区里的文件的差异.
  2. git diff filename 查看工作区中某个修改了的文件与暂存区中的文件的差异
  3. git diff branch_name another_branch_name 显示两个分支的详细的差异
  4. git diff branch_name another_branch_name -- filename 显示两个分支指定文件的差异
    必须添加--,不然会报下面的错误

    fatal: ambiguous argument './deployment/src/main/Main.java': unknown revision or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'
  5. git diff branch_name another_branch_name --stat 列出所有两个分支所有有差异的文件

git show

  1. git show --stat <commit> 列出某次提交所有修改的文件及显示文件行数变化状态
  2. git show --name-only <commit> 列出某次提交的所有修改的文件
  3. git show <commit> filename 显示某次提交文件的变化

git add

git add <path|filename> 此命令有多种含义,但本质上是吧文件添加至暂存区

  • 添加文件至暂存区
  • merge时出现了冲突,解决冲突之后通过此命令将文件添加到暂存区也表示冲突解决:git add filename
  • 添加对文件的跟踪

git add -u 将已被跟踪的文件中所有被修改的文件添加到暂存区中。

git commit

  1. git commit 此时git会启动一个文本编辑器. 在文本编辑器中输入说明信息且保存.
  2. git commit -m "说明" 提交代码
  3. git commit –amend 对上一次提交的注释信息进行修改.

git rebase

  1. git rebase -i HEAD~n 执行此命令,将弹出如下的代码:

    pick c01fa0654 ***
    pick da2241df1 ***
    pick 1fe8591c5 ***

    将对应的pick改为reword之后保存并退出,之后可以修改某一次的commit信息

git pull

  git pull = git fetch + git merge,即先将远程库中的代码拉下来,然后进行合并.git pull执行过程中如果遇到冲突,且远程库中代码相对于本地有许多修改的情况下,会出现有许多文件需要commit,但是当你解决冲突并且提交了代码之后,修改记录只会出现你处理冲突的文件,而不会出现那些拉下来并没有进行过修改的代码。
  git pull <远程主机名> <远程分支名>:<本地分支名> 拉取远程分支的更新并与当前分支合并

git remote

  1. git remote 查看所有的远程库
  2. git remote -v 查看所有的远程库并且显示远程库的ssh地址
  3. git remote add remote_repository_name ssh地址 添加远程库
  4. git remote set-url <远程库名> [url] 修改远程库的名字

git push

  git push <远程主机名> <本地分支名>:<远程分支名> 将本地的代码推送至远端
  git push --set-upstream <远程库名> <远程分支名> 在本地分支未跟踪任何远程库时,设置远程库并将推送本地commit至远程分支

git log

  1. git log 查看所有历史提交记录
  2. git log branchname 查看某分支的历史提交记录
  3. git log -n n为数字,查看最近n次提交
  4. git log filename 查看文件的提交历史
  5. git log --graph 分支名(多个分支名以空格隔开) 以图形形式显示分支历史提交信息
  6. git log --graph --all 以图形形式显示所有分支历史提交信息
  7. git log --author=<author name> 查看指定用户的所有提交记录

git reflog

  git reflog 当某次执行了git reset恢复至之前某个commit之后,使用git log就不再能够查看到该commit之后的提交记录了,此时可以使用git reflog查看所有提交记录:
 

git checkout

  1. git checkout 分支名 分支切换
  2. git checkout commit filename 将某个文件恢复至某个commit
  3. git checkout -- filename 用本地仓库的状态替换工作区的状态
  4. git checkout -b local_branch_name remote_branch_name 从远程分支拉取并创建本地分支
  5. git checkout -b branch_name 从当前分支拉出新分支,分支名为branch_name

git reset

  git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD] 将当前分支回退至指定commit,方式为指针向左移动
  参数说明:
  --soft 当前分支回退到指定的commit,并且不会删除任何文件,该commit之后修改的文件状态为已添加至缓存区中.

  --mixed 重置索引,但不重置工作树,更改后的文件标记为未提交(add)的状态。默认操作。

  --hard 重置索引和工作树,并且原分支修改的所有文件和中间的提交都被丢弃了。

git revert

  git revert <commit> 将当前的分支回退至某个commit之前一个commit的状态,方式为创建一个新的commit来回退

git branch

  1. git branch –d 分支名 删除分支
  2. git branch 分支名 创建分支
  3. git branch -v 查看本地所有的分支

git stash & git stash pop

这两种命令通常用于解决以下问题:

  1. 当执行pull操作出现冲突的情况下,可以将当前工作区的修改先保存在堆栈中,然后执行pull操作之后再恢复。恢复会在应用到执行了pull操作之后的代码上。
  2. 当你在某分支进行编码时,遇到需要切换分支到另外一个分支去解决一些问题;此时你需要先将当前分支的修改保存下来。

  1. git stash 将当前工作区和暂存区的改动保存在堆栈中.
  2. git stash list 列出堆栈中所有的存储.
  3. git stash apply 将最新的存储应用到当前分支.
  4. git stash apply <存储名>,存储名是stash@{0}这样的字段,将存储名对应的存储应用到当前的分支.

  git stash pop 恢复工作区和暂存区的改动,并且删除堆栈此次记录的信息.

git rm

  git rm –cached 文件名 将暂存区的文件删除

git merge

分支合并有两种方式:
  git merge 分支名 将分支合并到当前分支

相关推荐