Git常用命令
Git工作流
常用命令
git status
可以查看各文件的状态和所处的分支
On branch master #所处的分支 |
这样的信息过于繁琐,可以用git status -s
显示简短信息
M README |
最左边的两个字母,左边表示暂存区状态,右边表示工作区状态。
M
:Modified A
:Added ?
:Untracked
git diff
git diff
比较工作目录中当前文件和暂存区域快照之间的差异
git diff --staged
/git diff --cached
比较暂存区和git仓库提交的最后一个版本的差别
可以使用git difftool
调用GUI工具比较差异
git add
添加文件到暂存区
git add .
表示添加目录下所有文件,但是会忽略掉.gitignore
里标注的文件,.
处可以用glob匹配规则
git rm
git rm xxx
用于删除了工作区文件后,删除暂存区文件,并不跟踪
git rm -f xxx
表示删除暂存区xxx文件、工作区文件会被一起删除
git rm --cached xxx
表示删除暂存区xxx文件,工作区不会被删除【适用于想保留文件,但不想让git跟踪】
git mv
git mv xxx yyy
把名为xxx的文件名改为yyy【工作区文件会被修改】
相当于以下三条命令
git mv README.md README |
git commit
git commit
进入设置的编辑器编辑提交的内容
git commit -m "xxxxx"
快速设置提交的内容为xxxxx
合并commit信息
git commit --amend
可以修改上一次的提交信息,会将暂存区的文件进行提交
如果需要修改上一次commit里的文件,可以这样操作
git commit -m "需要被修改的提交" |
git log
HEAD
表示该分支上的最后一次提交的快照,后面的master
表示所处的分支
image-20220721141559195
image-20220721141753010
这里的时间可以用2022-7-21
也可以用2.weeks
git reset
取消暂存区的文件use "git reset HEAD ..." to unstage
git restore / git checkout –
撤销对文件的修改,恢复到最后一次提交的状态
远程仓库的使用
如工作流图所示,但是需要注意
clone
会带着版本历史和记录一起下载,直接在GitHub上下载的zip包没有pull
命令会覆盖工作区文件,fetch
不会【其对应的命令为git fetch/pull <remote>
】push
命令为git push <remote> <branch>
查看远程仓库
git remote
列出每一个远程服务器的简写
git remote -v
会附带显示其url
添加远程仓库
git remote add <shortname> <url>
添加远程仓库
添加完远程仓库后,可以用shortname代表远程仓库
例如: 执行git remote add gitignore https://github.com/github/gitignore
后,可以用gitignore/master
访问其master分支
git clone
之后会默认设置远程仓库origin
为克隆的地址
远程仓库的重命名与移除
git remote rename <old> <new>
重命名
git remote remove/rm <remote>
移除
Git别名
git config --global alias.<new> <old>
例如:执行了git config --global alias.ci 'commit'
之后git ci
就等价于git commit
【git也可以代理非git命令】
git config --global alias.p '!ping'
【注意使用!
】
之后git p
和ping
等价
.gitignore文件
.gitignore
文件采用glob模式
进行匹配。【glob 模式是指 shell 所使用的简化了的正则表达式】
可以在根目录下有一个,子目录下也可以有
字符 | 匹配 |
---|---|
* | >=0个字符 |
? | 1个字符 |
[abc] ([a-c])、[0-9] | 一个其中的任意一个字符 |
** | 任意中间目录 |
一个示例:
# 忽略所有的 .a 文件 |
Github提供了常用的.gitignore
文件:
github/gitignore: A collection of useful .gitignore templates