git学习笔记(一)Git基础

git学习笔记(一) Git基础

git三种状态

Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。
• 已修改表示修改了文件,但还没保存到数据库中。
• 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
• 已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 Git 项目拥有三个阶段:工作区暂存区以及 本地仓库

获取帮助

$ git <verb> --help
$ git help <verb>
$ man git-<verb>

例:获取 git add命令帮助:

$ git add -h
usage: git add [<options>] [--] <pathspec>...
-n, --dry-run dry run
-v, --verbose be verbose
-i, --interactive interactive picking
-p, --patch select hunks interactively
-e, --edit edit current diff and apply
-f, --force allow adding otherwise ignored files
-u, --update update tracked files
--renormalize renormalize EOL of tracked files (implies -u)
-N, --intent-to-add record only the fact that the path will be added
later
-A, --all add changes from all tracked and untracked files
--ignore-removal ignore paths removed in the working tree (same
as --no-all)
--refresh don't add, only refresh the index
--ignore-errors just skip files which cannot be added because of
errors
--ignore-missing check if - even missing - files are ignored in
dry run
--chmod (+|-)x override the executable bit of the listed files

设置信息

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

使用--global选项,那么命令只需要在该系统运行一次。

初始化仓库

$ git init

该命令创建一个名为.git的子目录,只需要项目文件中含.git文件夹,就可以称为Git仓库。

克隆现有仓库

$ git clone https://github.com/libgit2/libgit2

$ git clone https://github.com/libgit2/libgit2 mylibgit(自定义目录名)

检测文件状态

$ git status

忽略文件

在项目根目录创建.gitignore文件。

*.[oa]
*~

首行忽略.o.a结尾的文件,次行忽略以波浪符结尾的文件。

文件.gitignore的格式规范:

  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。

官方的.gitignore例子:

# 忽略所有的 .a 文件
*.a

# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a

# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO

# 忽略任何目录下名为 build 的文件夹
build/

# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表, 你可以在
https://github.com/github/gitignore 找到它。

比较差异

$ git diff
$ git diff --staged

对于某个文件,进行了git add filename操作加入到暂存区后,再对文件进行修改,

想查看修改前后的差异,可使用git diff命令。

git diff比较的是工作目录中当前文件暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。

若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --staged命令。

git diff --staged命令将比对已暂存文件最后一次提交的文件差异。

--staged--cached 是同义词

移除文件

$ git rm <file-name>
$ git rm -f <file-name>
$ git rm --cached <file-name>

git rm同时从工作区和暂存区中删除文件,即本地的文件也被删除了。如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项-f,如果想保留工作区的文件,可以使用--cached选项。

文件改名

$ git mv file_from firle_to

git mv相当于运行了下面三条命令:

$ mv README.md README
$ git rm README.md
$ git add README

查看提交历史

$ git log

git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。

提交更新

$ git commit

执行后会打开vim,输入提交信息。

$ git commit -m "提交信息"

-m参数将提交信息和命令放在同一行。

$ git commit -a -m "提交信息"

-a参数跳过使用暂存区域,即跳过git add步骤。

有时这个选项会将不需要的文件添加到提交中。

撤销操作

$ git commit --amend

该命令覆盖上一次提交。

$ git reset HEAD <file>

该命令将文件从暂存区移除。即撤销add该文件的命令。

$ git checkout -- CONTRIBUTING.md

该命令撤销对文件的修改,返回上一次提交的样子。

git checkout -- <file>是一个危险的命令。 你对那个文件在本地的任何修改都会消失——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令。

远程仓库的使用

$ git clone <远程仓库地址>

克隆远程仓库到本地。

$ git remote -v

显示读写远程仓库时需要使用的简写及其对应的 URL。

$ git remote add <shortname> <url>

添加一个新的远程 Git 仓库,同时指定一个方便使用的简写,此后可以使用简写来代替url。

$ git remote show <remote>

查看某个远程仓库的URL、branches等信息。

$ git push <shortname> <branch>

推送到远程仓库的某个分支

$git remote rename <old name> <new name>

将一个远程仓库的简写名重命名。

ortname>


> 添加一个新的远程 Git 仓库,同时指定一个方便使用的简写,此后可以使用简写来代替url。



```bash
$ git remote show <remote>

查看某个远程仓库的URL、branches等信息。

$ git push <shortname> <branch>

推送到远程仓库的某个分支

$git remote rename <old name> <new name>

将一个远程仓库的简写名重命名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值