Git常用命令
git init
git init 该命令创建一个.git目录,这个目录包含必要的文件。但是此时工程中的文件还没有被跟踪,需要通过git add添加跟踪文件.
git status
git status 查看哪些修改的文件已经暂存了,哪些修改的文件没有暂存,哪些文件没有被追踪,如下所示:
git diff
- git diff 查看工作区里所有的修改了的文件与暂存区里的文件的差异.
- git diff filename 查看工作区中某个修改了的文件与暂存区中的文件的差异
- git diff branch_name another_branch_name 显示两个分支的详细的差异
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>...]'
- git diff branch_name another_branch_name --stat 列出所有两个分支所有有差异的文件
git show
- git show --stat <commit> 列出某次提交所有修改的文件及显示文件行数变化状态
- git show --name-only <commit> 列出某次提交的所有修改的文件
- git show <commit> filename 显示某次提交文件的变化
git add
git add <path|filename> 此命令有多种含义,但本质上是吧文件添加至暂存区
- 添加文件至暂存区
- merge时出现了冲突,解决冲突之后通过此命令将文件添加到暂存区也表示冲突解决:git add filename
- 添加对文件的跟踪
git add -u 将已被跟踪的文件中所有被修改的文件添加到暂存区中。
git commit
- git commit 此时git会启动一个文本编辑器. 在文本编辑器中输入说明信息且保存.
- git commit -m "说明" 提交代码
- git commit –amend 对上一次提交的注释信息进行修改.
git rebase
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
- git remote 查看所有的远程库
- git remote -v 查看所有的远程库并且显示远程库的ssh地址
- git remote add remote_repository_name ssh地址 添加远程库
- git remote set-url <远程库名> [url] 修改远程库的名字
git push
git push <远程主机名> <本地分支名>:<远程分支名> 将本地的代码推送至远端
git push --set-upstream <远程库名> <远程分支名> 在本地分支未跟踪任何远程库时,设置远程库并将推送本地commit至远程分支
git log
- git log 查看所有历史提交记录
- git log branchname 查看某分支的历史提交记录
- git log -n n为数字,查看最近n次提交
- git log filename 查看文件的提交历史
- git log --graph 分支名(多个分支名以空格隔开) 以图形形式显示分支历史提交信息
- git log --graph --all 以图形形式显示所有分支历史提交信息
- git log --author=<author name> 查看指定用户的所有提交记录
git reflog
git reflog 当某次执行了git reset恢复至之前某个commit之后,使用git log就不再能够查看到该commit之后的提交记录了,此时可以使用git reflog查看所有提交记录:
git checkout
- git checkout 分支名 分支切换
- git checkout commit filename 将某个文件恢复至某个commit
- git checkout -- filename 用本地仓库的状态替换工作区的状态
- git checkout -b local_branch_name remote_branch_name 从远程分支拉取并创建本地分支
- 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
- git branch –d 分支名 删除分支
- git branch 分支名 创建分支
- git branch -v 查看本地所有的分支
git stash & git stash pop
这两种命令通常用于解决以下问题:
- 当执行pull操作出现冲突的情况下,可以将当前工作区的修改先保存在堆栈中,然后执行pull操作之后再恢复。恢复会在应用到执行了pull操作之后的代码上。
- 当你在某分支进行编码时,遇到需要切换分支到另外一个分支去解决一些问题;此时你需要先将当前分支的修改保存下来。
- git stash 将当前工作区和暂存区的改动保存在堆栈中.
- git stash list 列出堆栈中所有的存储.
- git stash apply 将最新的存储应用到当前分支.
- git stash apply <存储名>,存储名是stash@{0}这样的字段,将存储名对应的存储应用到当前的分支.
git stash pop 恢复工作区和暂存区的改动,并且删除堆栈此次记录的信息.
git rm
git rm –cached 文件名 将暂存区的文件删除
git merge
分支合并有两种方式:
git merge 分支名 将分支合并到当前分支