git 常用命令
1. 仓库相关
1. git init
创建仓库
git init
git init <directory>
directory
本地目录。
2. git clone
拉取远程仓库
git clone <repo>
git clone <repo> <directory>
repo
Git 仓库。directory
本地目录。
3. git config
- 显示全部配置文件
git config --list
- 编辑 git 配置文件
#针对当前仓库
git config -e
# 针对系统上所有仓库
git config -e --global
例:设置提交代码时的用户信息
git config --global user.name "runoob"
git config --global user.email test@runoob.com
2. 提交和修改
1. git add
添加文件到暂存区
- 添加文件
git add . | [file...]
可用.
添加全部文件,可用*
进行模糊匹配,
- 可视化添加
git add -i
The file will have its original line endings in your working directory
staged unstaged path
1: +0/-2 nothing RuanZhuCode.iml
2: unchanged +29/-11 src/main/java/cn/devmeteor/ruanzhucode/App.java
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
status
查看变更状态update
更新文件revert
还原提交add untracked
添加未跟踪文件patch
补丁diff
比较不同quit
退出help
帮助
patch 命令的选项
y - 暂存此区块
n - 不暂存此区块
q - 退出;不暂存包括此块在内的剩余的区块
a - 暂存此块与此文件后面所有的区块
d - 不暂存此块与此文件后面所有的 区块
g - 选择并跳转至一个区块
/ - 搜索与给定正则表达示匹配的区块
j - 暂不决定,转至下一个未决定的区块
J - 暂不决定,转至一个区块
k - 暂不决定,转至上一个未决定的区块
K - 暂不决定,转至上一个区块
s - 将当前的区块分割成多个较小的区块
e - 手动编辑当前的区块
? - 输出帮助
2. git status
git status
命令用于查看在你上次提交之后是否有对文件进行再次修改。
git status
通常我们使用-s
命令获取简短的输出结果
git status -s
AM 状态的意思是这个文件在我们将它添加到缓存之后又有改动。
3. git diff
git diff
命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff
命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。
git diff
有两个主要的应用场景。
- 尚未缓存的改动:
git diff
- 查看已缓存的改动:
git diff --cached
- 查看已缓存的与未缓存的所有改动:
git diff HEAD
- 显示摘要而非整个
diff
:git diff --stat
- 显示暂存区和工作区的差异
git diff [file]
- 显示暂存区和上一次提交(commit)的差异
git diff --cached [file]
# or
git diff --staged [file]
- 显示两次提交之间的差异
git diff [first-branch]...[second-branch]
4. git commit
git commit
命令将暂存区内容添加到本地仓库中。
- 提交暂存区到本地仓库中
git commit -m [message]
message
可以是一些备注信息。
- 提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message]
- 修改文件后直接提交
git commit -a
该命令直接提交无需git add .
5. git reset
git reset
命令用于回退版本,可以指定退回某一次提交的版本。
会删除之前全部的提交
- 基本命令
git reset [--soft | --mixed | --hard] [HEAD]
--soft
用于回退到某个版本, 将之前提交的内容保存到缓存区--mixed
为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。-
--hard
撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,不保留缓存区 HEAD
设置回退到那个版本head^
回退到上个版本head~[number]
回退到之前第number
个版本commit id
回退到指定commit
- 取消文件暂存
git reset HEAD <file_name>
执行 git reset HEAD
以取消之前 git add
添加,但不希望包含在下一提交快照中的缓存。
6. git rm
git rm
命令用于删除文件。
如果只是简单地从工作目录中手工删除文件,运行 git status
时就会在 Changes not staged for commit
的提示。
- 将文件从暂存区和工作区中删除
git rm <file>
- 强行删除文件
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
。
git rm -f <file>
- 暂存区域移除,但仍然希望保留在当前工作目录(从
stash
中删除)
git rm --cached <file>
7. git mv
git mv
命令用于移动或重命名一个文件、目录或软连接。
git mv [file] [newfile]
如果新文件名已经存在,但还是要重命名它,可以使用 -f
参数
git mv -f [file] [newfile]
8. git rebase
git rebase -i [startpoint] [endpoint]
git rebase -i HEAD~[number]
# 复制到指定分支
git rebase [startpoint] [endpoint] --onto [branchName]
-i
的意思是--interactive
,即弹出交互式的界面让用户编辑完成合并操作,[startpoint]
[endpoint]
则指定了一个编辑区间,如果不指定[endpoint]
,则该区间的终点默认是当前分支HEAD
所指向的commit
(注:该区间指定的是一个前开后闭的区间)。- 可以通过
[HEAD]
指定number
的方式进行选择需要合并的内容
命令选项
pick
:保留该 commit(缩写:p)reword
:保留该 commit,但我需要修改该 commit 的注释(缩写:r)edit
:保留该 commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)squash
:将该 commit 和前一个 commit 合并(缩写:s)fixup
:将该 commit 和前一个 commit 合并,但我不要保留该提交的注释信息(缩写:f)exec
:执行 shell 命令(缩写:x)drop
:我要丢弃该 commit(缩写:d)
参考简书: 【Git】rebase 用法小结
9. git restore
git restore
命令是撤销的意思,也就是把文件从缓存区撤销,回到未被追踪的状态。
该命令有git restore <file>
和git restore --staged <file>
3. 提交日志
1. git log
查看历史提交记录。
git log
--oneline
简洁版本--graph
查看开发历史- ` –reverse` 逆向显示
- ` –author`指定用户
more
查看
2. git blame
查看指定文件修改记录
git blame <file>
4. 远程操作
1. git remote
git remote
命令用于在远程仓库的操作。
- 显示所有远程仓库
git remote -v
- 显示某个远程仓库信息
git remote show [remote]
- 添加远程版本库
git remote add [shortname] [url]
- 删除远程仓库
git remote rm name
- 修改仓库名
git remote rename old_name new_name
- 更改远程仓库地址
git remote set-url origin [url]
注: 新版本GitHub
需要usertoken
方式进行认证,username
/password
会提示失败
2. git fetch
git fetch
命令用于从远程获取代码库。(只拉取远程代码不合并)
git fetch [alias]
alias
远程仓库名
3. git pull
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull
命令用于从远程获取代码并合并本地的版本。
git pull
其实就是 git fetch
和 git merge FETCH_HEAD
的简写
4. git push
git push
命用于从将本地的分支版本上传到远程并合并。
git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号
git push <远程主机名> <本地分支名>
--force
强行推送--delete
删除分支
5. 分支管理
1. git branch
- 创建分支
git branch (branchname)
- 查看分支
git branch
没有参数时,git branch
会列出你在本地的分支。
- 创建分支并立即切换
git checkout -b (branchname)
- 删除分支
git branch -d (branchname)
2. git checkout
- 切换分支
git checkout (branchname)
3. git merge
- 合并分支
git merge