Git命令和基础知识

2019-11-25  本文已影响0人  冲云简

1、Git仓库创建

本地创建

$ git init ///创建初始化仓库。

///初始化提交

$ git add *.java 提交问题

$ git add LICENSE

$ git commit -m 'initial project version'

或者远处clone

$ git clone <URL>(仓库地址)或 git clone<URL>(仓库地址)<name>(文件名)

2、记录更新仓库

文件存在四种状态,untracked(未跟踪), unmodified(未更改),modified(更改), staged(已暂存)。

$ git status ///查看文件状态

$ git status -s 或 git status —short ///查看状态更简洁。

忽略文件(不需要git管理的文件)

$ cat .gitignore

*.[oa]

*~

第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的。 第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。 此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。 要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

文件 .gitignore 的格式规范如下:

查看已暂存和未暂存的修改

$ git diff /// 比较的是工作目录中当前文件和暂存区域快照之间的差异

$ git diff -cache /// 查看已暂存的将要添加到下次提交里的内容

提交更新

$ git commit ///每次准备提交前,先用 git status 看下,是不是都已暂存起来了

$ git commit -m “commit message” ///可以添加提交记录

$ git commit -a ///将所有已跟踪的文件暂存起来,已暂存后提交,跳过了git add步骤。

移除文件

$ git rm <name> ///从暂存区域移除文件,并从工作目录删除文件, 下一次提交时,该文件不再纳入版本管理。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f,即: git rm -f <name>

$ git rm —cache <name> ///只是移除git控制,但工作目录不删除。

$ git rm log/*.log /// git rm 命令后面可以列出文件或者目录的名字, 此命令删除 log/ 目录下扩展名为 .log 的所有文件

$ git rm *~ ///该命令为删除以 ~ 结尾的所有文件。

移动文件

$ git mv <name1> <name2> ///重命名文件

3、查看提交历史

git log ///查看提交历史记录

git log -p -2 /// -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交

git log —stat /// 查看每次提交的简略的统计信息

git log —pretty ///简洁的查看提交历史记录

git log —pretty=format:"%h - %an, %ar : %s" ///显示的记录格式

///下面是各命令代表的含义
-p 按补丁格式显示每个更新之间的差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
-(n) 仅显示最近的 n 条提交
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。
--author 仅显示指定作者相关的提交。
--committer 仅显示指定提交者相关的提交。
--grep 仅显示含指定关键字的提交
-S 仅显示添加或移除了某个关键字的提交

4、撤销操作

$ git commit —amend ///将暂存区的文件重新提交

如果你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:

$ git commit -m 'initial commit'

$ git add forgotten_file

$ git commit --amend

最终你只会有一个提交——第二次提交将代替第一次提交的结果。

$ git reset HEAD <name> /// 取消已暂存的文件。

$ git checkout — <name> ///撤销之前文件的修改,返回到上一次提交状态,慎用,撤销后不可再恢复

5、远程仓库的使用

查看远程仓库

$ git remote /// 显示仓库服务器的名字

$ git remote -v ///显示仓库服务器的名字 和URL

添加远程仓库

$git remote add <shortname> <URL> /// 添加远程仓库,指定仓库服务器名

从远程仓库中抓取和拉取

$ git fetch [remote-name] ///从远程仓库中获取你还没有的数据,执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。git fetch origin 会抓取clone(或上一次抓取)后新推送的所有工作, 必须注意 git fetch 命令会将数据拉取到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

$ git pull [remote-name] ///从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

$ git push [orgiin] [master] ///master 分支推送到 origin 服务器, 必须先拉取,合并,再push,以免冲突。

查看某个远程仓库

$ git remote show [remote-name] /// 查看远程仓库的信息。

远程仓库的移除和重命名

$ git remote rename [name1] [name2] /// 将name1 重命名为name2

$ git remote rm name /// 移除name1

6Git标签

$ git tag ///显示标签信息,如:v0.1, v1.3

$ git tag -l ‘v1.8.5’ /// 查找包含v1.8.5的的标签

$ git tag -a v1.4 -m “my version 1.4” /// 创建一个带注释的v1.4标签

$ git show v1.4 /// 查看标签信息和对应的提交信息

$ git tag v1.4-lw ///提交轻量标签

$ git log —pretty=online /// 查看提交历史记录。

$ git tag -a v1.2 [校验和] /// 给过去的提交创建标签,末尾需指定校验和,或者部分校验和如:9fceb02

$ git push origin v1.5 /// 共享标签,创建标签,推送到共享服务器上

$ git push orgin —tags /// 一次性推送多个标签到远程服务器上。

$ git tag -d v1.4-lw /// 删除本地标签。

$ git push origin :refs/tags/v1.4-lw ///将删除的标签操作,更新到你的远程仓库。

$ git checkout 2.0.0 ///查看标签所指向的文件版本,会使你的仓库处于detacthed HEAD状态。

$ git checkout -b verson2 v2.0.0 ///创建一个新分支

git****别名

$ git config —global alias.co checkout /// 通过git config给你的命令设置别名。

Git****分支 —— https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell

参考链接https://git-scm.com/book/zh/v2

上一篇下一篇

猜你喜欢

热点阅读