git init
初始化仓库git init
命令用于在目录中创建新的 Git 仓库。
在项目目录中执行 git init
就可以创建一个 Git 仓库了。
如果要指定创建到某个新文件夹下,可以执行:
git init folder_name
然后就会在当前路径下创建一个名为"folder_name"的项目文件夹,内含已经初始化完毕的Git仓库。
git clone
克隆仓库git clone
拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。拷贝项目命令格式如下:
git clone [url]
[url]
为待克隆项目的地址,一般为网址,例如:
git clone https://github.com/Heartfirey/ACM_Algorithm_Library
克隆完毕后,在当前目录下会生成一个目录用于存放克隆的项目。
如果要指定克隆的位置,也可以在命令后面附加:
git clone [url] [location]
比如,克隆项目到当前目录下,而不是创建新文件夹:
git clone https://github.com/Heartfirey/ACM_Algorithm_Library ./
git add
添加文件到暂存区git add
命令可将该文件添加到暂存区。
添加一个或多个文件到暂存区:
git add [file1] [file2] ...
添加指定目录到暂存区,包括子目录:
git add [dir]
添加当前目录下的所有文件到暂存区:
git add .
git status
查看仓库当前的状态,显示文件变更git status
命令用于查看在上次提交之后是否有对文件进行再次修改
git status
为了获取更为简短的输出,一般附加参数-s
git status -s
git diff
比较暂存区和工作区对应文件不同git diff
命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。
git diff
有两个主要的应用场景。
git diff
git diff --cached
git diff HEAD
git diff --stat
显示暂存区和工作区的差异:
git diff [file]
显示暂存区和上一次提交(commit)的差异:
git diff --cached [file]
git diff --staged [file]
显示两次提交之间的差异:
git diff [first-branch]...[second-branch]
git commit
提交暂存区到本地仓库git commit
用于将暂存区的内容提交到本地代码仓库中。
git commit -m [message]
[message]主要写本次提交的改动等备注信息。
提交暂存区的指定文件到仓库中:
git commit [file1] [file2] ... -m [message]
也可以使用-a
参数跳过缓存区,直接将工作区代码提交到代码仓库(不建议)。
git commit -a
git reset
回退版本git reset
用于回退版本,可以指定退回某一次提交的版本,也可以用于取消已缓存的内容。
git reset [--soft | --mixed | --hard] [HEAD]
--mixed
为默认参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
--soft
参数用于回退到某个版本
--hard
撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
慎用--hard
参数!
[HEAD]参数说明:
可以使用 ~数字表示
示例:
git reset --hard HEAD~3 # 回退上上上一个版本
git reset –hard bae128 # 回退到某个版本回退点之前的所有信息。
git reset --hard origin/master # 将本地的状态回退到和远程的一样
git reset HEAD
命令用于取消已暂存的内容:
git reset HEAD [file1] [file2] ...
将会将指定文件从暂存区移除。
git rm
将文件从暂存区和工作区中删除git rm 命令用于删除文件。
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。
git rm 删除文件有以下几种形式:
1、将文件从暂存区和工作区中删除:
git rm <file>
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
。
git rm -f <file>
如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached
选项即可:
git rm --cached
git mv
移动或重命名工作区文件git mv
命令用于移动或重命名一个文件、目录或软连接。
git mv [file] [newfile]
如果新文件名已经存在,但还是要重命名它,可以使用 -f
参数:
git mv -f [file] [newfile]
git log
查看提交历史记录git log [<options>] [<revision-range>] [[--] <path>…]
[
常用参数选项:
--online
该命令可以查看当前项目的历史提交记录,如果需要查看简洁版的历史记录,可以加入--oneline
参数:
git log --oneline
此时会将所有提交的历史记录以简洁模式进行展示。
--graph
如果希望查看项目的分支创建、合并情况,可以附加--graph
参数:
git log --graph
此时能够在控制台中显示项目历史记录的拓扑图,能够清晰的看到工作的分支和合并记录关系。
--reverse
如果希望逆向来显示日志,可以附加--reverse
参数:
git log --reverse
--author
如果希望仅查找指定用户/作者的提交日志,可以附加参数--author
:
git log --author xxx
该命令会显示显示与xxx
有关的提交日志
--since
、--before
如果要指定日期,可以执行几个选项:--since
和 --before
,也可以用 --until
和 --after
git log --oneline --before={3.weeks.ago} --after={2010-04-18}
--no-merges
可以用于隐藏合并提交:
git log --no-merges
--follow
仅展示指定的单个文件的历史提交记录
git log --follow ./xxx.xxx
更多的命令参数选项,可以参考:Git - git-log Documentation (git-scm.com)
git blame
以列表形式查看指定文件的历史修改记录如果需要查询指定文件的修改记录,并以列表形式进行查看,可以使用git blame
命令:
git blame xxx