git基本命令:
- git status : 查看当前仓库中文件的状态。
- git status -s : 文件状态的简写(M - 修改, A - 添加, D - 删除, R - 重命名,?? - 未追踪)。
- git add <文件名> :将后方紧跟的文件进行暂存,以便commit使用。
- git reset HEAD <文件名> : 将已经暂存的文件进行撤销,回到未暂存的状态。
- git checkout -- <文件名> :撤销对尚未暂存文件的修改,该操作不可逆,慎用。
- git commit -a : 对那些被修改的文件但尚未暂存和提交的文件进行暂存和提交。注意:对未暂存的新增文件无效。
- git commit : 对暂存区的文件进行提交到本地仓库。
- git push : 将本地仓库已经提交的内容发布到远端。
下面新建一个新的项目具体操作下:
新建项目GitTestDemo,
1. git add
把文件NewTestFile.rtf放入项目中,这时文件未被暂存
使用git status
命令后,提示这些修改可以被提交,使用 git status -s
命令后,可看出文件名前有??
,说明文件未被暂存。用git add NewTestFile.rtf
命令,再查看状态,状态由原来的红色变为绿色,并且标记由??
变为A
(A表示新增文件)
2. git reset HEAD
对已经暂存的文件NewTestFile.rtf执行git reset HEAD <文件名>
操作,然后NewTestFile.rtf文件又回到了之前的未暂存状态
3. git checkout -- <文件名>
修改README.md文件,且不要暂存,使用git checkout -- README.md
, 则被修改的README.md文件回到了之前的状态。git checkout -- <文件名>是不可逆的,因为其回滚的内容并没有在git中进行暂存和记录
(注: 对新添加的文件不起作用,只对已添加并再次修改的文件起作用)
4.git commit -a
修改README.md文件
执行git commit -a
命令,把已修改的README.md文件进行添加和提交(注:git commit -a 只对 状态为M的文件有用,而对新增而未添加的文件是不起作用的)
5.git push
执行git push
命令,把刚提交的内容推送到远程
SourceTree中和 gitbub上可以看到相关的内容被修改了
查看和修改远端地址
1.添加远端仓库地址
通过
git remote -v
命令查看当前仓库的远端地址然后在通过
git remote add
远端仓库地址别名<url>来添加一个新的仓库地址。接着再次对远端仓库的链接查看时,就会看到相应的新添加的仓库地址。
最后对README文件做修改,并push到刚添加的新的远端仓库origin_ssh上
2. 远端仓库地址上传和重命名
- 执行
git remote -v
命令来查看目前现有的远端仓库。 - 执行
git remote rm origin
命令删除origin的远端地址,删除后再查看,origin的仓库地址就没有了。 - 执行
git remote rename origin_ssh origin
,将origin_ssh重命名为origin。 - 执行
git remote show origin
命令来查看push到远端的那个分支。
git常用的命令操作
1. git diff
修改 README.md文件,
执行git diff
命令可以查看未暂存文件的修改情况。如果你的文件已经被添加到了暂存区存储起来了,那么git diff 就看不到已经被暂存起来的文件的修改内容了。
但是如果使用了git add 命令后将其添加到了暂存区,可以通过执行git diff --cached
或者使用 git diff --staged
命令查看暂存文件的修改内容
2. 文件的移除
如果后悔删除,可进行撤销操作
先执行git reset master 文件名
命令,从暂存区将已暂存删除的文件进行撤销。
在通过git checkout -- 文件名
命令 将删除的文件进行恢复
3. 通过git mv进行重命名
git mv NewTestFile.rtf RenameFile.rtf
等同于以下三个命令:
- mv NewTestFile.rtf RenameFile.rtf
- git rm NewTestFile.rtf
- git add RenameFile.rtf
4.git log 相关
(1) git log
git log
命令查看历史提交。
commit: 每个提交的哈希值、作者(Author)、修改时间(Date)以及提交时的message组成
(2) git log -p
使用git log -p -1
可以查看最近一次提交的差异
使用git log -p
可以查看所有的差异
(3) git log --stat
git log --stat
命令查看简化板的diff日志信息,会给出某个文件增加或减少的某个代码量,而不会给出详细的修改内容。
(4) git log --graph
git log --graph
命令可以让log 以更直观的方式来展示。左边的内容是相关提交的分支合并信息。(此项目目前只有一个master分支)
(5) git log --pretty
git log --pretty=oneline
可以让每次的commit在一行上显示,每一行就是一个commit,前面是commit所对应的hash值,后面是commit所对应的message。
我们可以用git log --pretty
来定义格式显示,下方内容是“ git log --graph --pretty=format:"%h - %an, %ar : %s" ”命令的输出内容, --pretty=format:后边跟着的是格式化的字符串。其中 %h 表示简化版的Hash值, %an 表示作者名字(Author Name), %ar 表示多久以前提交的,%s 则是提交信息。
下方是格式的常用选项:
下方是git log常用选项:
5. git commit --amend
使用git commit --amend
会与最后一次提交进行合并生成一个新的提交,之前的提交会被废弃掉。
例子:
先修改README.md文件,并commit
再次修改README.md文件,这次想要追加到上次的commit,效果如下:之前的提交信息被覆盖了
用git log
查看日志,从commit号来看,是一次新的提交,只不过是对上次提交进行合并,然后覆盖上次提交。
6. 打标签 - Tag
创建的标签包括“轻量标签”(lightweight)和 “辅助标签”(annotated)。轻量标签之所以轻量是因为它只是一个特定commit的引用。而“辅助标签”是存储在git数据库中的一个完整对象。可以使用git tag -a 版本号 -m 'tag 信息'来创建“轻量标签”。下面的命令就是创建了一个轻量标签,并且使用git tag进行展示。
给最后一次的提交打标签:执行git tag -a v1.0.0 -m "lightweight tag test"
git show v1.0.0
查看相关信息。包括:tag的创建人和创建信息以及打tag时的message,并且还会有该 tag所对应的commit的相关信息。
- 给之前的commit打标签
如果想要给之前的某个commit打一个tag,那么只需要将commit号追加到打标签的命令后即可。如:git tag -a vx.x.x -m 'message' commit-hash
。
执行git log --pretty=oneline
然后对 commit号为9597e9196aed2dceba33c241150db575fb0e5c11
的提交补一个tag
再次使用git log --pretty=oneline
来查看后补的tag信息。
- 将标签push到远端
操作如下图:
1.使用
git remote show
来查看所有的远端,此项目只有origin。
- 可以通过
git push origin v1.0.0
的命令格式将tag号为v1.0.0的标签push到远端origin, push成功后会提示在相应的远端创建了一个标签。- 最后可以使用
git push origin --tags
命令将本地创建的所有tag推送到远端origin。
下图省略了git push origin v1.0.0
,直接用git push origin --tags
命令把所有的tag推送到远程
查看github上已经有了刚才上传的两个标签v0.1.1和v1.0.0
-
check tag
在我们检出分支时,在分支的名字后面添加上相应的版本号,即可在该tag号所对应的分支上进行checkout。
下面的操作就是:在tag v0.1.1所对应的分支上checkout了一个名为MyTagTestBranch的新分支。
使用git show
命令来查看当前分支的最近一次提交信息。
7. 配置Git别名
在使用 git 命令时,如果你觉的 commit、checkout 等命令太长,每次输入全称太繁琐。在 git 中可以给一些命令添加一些别名,然后同这些别名来更为简洁的去操作git。下方就通过一个小示例来看一下git的别名。
1.使用 git config --global aliase.zhuangtai 给 status 命令创建了一个 zhuangtai 的别名。
2.在使用使用 git zhuangtai 命令时,就等同于 gitstatus 命令。
3.当然一般不推荐用拼音,还是用其英文命令的的缩写比较好,比如 status 可以定义为 st, checkout 为 co,等等。下方又给 status 设置了其他的一个别名 st。
同一个命令的别名是可以同时存在的,可以使用 git zhuangtai、也可以使用 git st。
- 查看所有设置的别名
- 使用oh-my-zsh插件使用提供的别名插件
oh-my-zsh提供了特别全的Git别名的使用方式,安装完以后即拥有了好多好用的快捷使用方式。
参考链接:
https://www.cnblogs.com/ludashi/p/8052739.html
https://www.cnblogs.com/ludashi/p/8053382.html