github上传文件基本操作

1 *基础*

Git创建的全过程
在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.1 *初始配置*

git config :专门用来配置或读取相应的工作环境变量

· /etc/gitconfig 文件:系统中对****所有用户****都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。

· ~/.gitconfig 文件:用户目录下的配置文件****只适用于该用户****。若使用 git config 时用 --global 选项,读写的就是这个文件。

· 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置****仅仅针对当前项目****有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

1.1.1 *用户信息*

$ git config --global user.name “John Doe”

$ git config --global user.email johndoe@example.com

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

1.1.2 *文本编辑器*

一般会是vim,如果换其他的,可以

$ git config --global core.editor emacs

1.1.3 *差异分析工具*

解决合并冲突时使用哪种差异分析工具

$ git config --global merge.tool vimdiff

1.1.4 *查看配置信息*

git config –list

也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:

$ git config user.name

Scott Chacon

1.2 *取得项目的git仓库*

有两种取得 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。

1.2.1 *从公共目录初始化新仓库*

要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:

$ git init

初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。*但我们还没有开始跟踪管理项目中的任何一个文件。*

如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

$ git add *.c #将文件纳入版本控制

$ git add README

$ git commit -m ‘initial project version’ #提交

add会把文件放入暂存区,如果add之后又有修改,需要再次add才行,否则commit的是修改之前的文件

1.2.2 *从现有仓库克隆*

克隆仓库的命令格式为 git clone [url]比如

$ git clone git://github.com/schacon/grit.git

如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

$ git clone git://github.com/schacon/grit.git mygrit

1.3 *记录每次更新到仓库*

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

工作目录下面的所有文件都不外乎这两种状态:*已跟踪或未跟踪*。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。

在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。
在这里插入图片描述

1.3.1 *检查文本状态*

要确定文件当前处于什么状态,可以用 git status 命令。

1.3.2 *忽略某些文件*

我们可以创建一个名为 .gitignore的文件,列出要忽略的文件模式。*查看已暂存和未暂存的更新*

1.3.3 *查看已暂存和未暂存的更新*

git status 列出修改过的文件

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

git diff –staged 看已经暂存起来的文件和上次提交时的快照之间的差异

1.3.4 *提交更新*

现在的暂存区域已经准备妥当可以提交了。在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用git status 看下,是不是都已暂存起来了,然后再运行提交命令 git commit

也可以用 -m 参数后跟提交说明的方式

1.3.5 *跳过使用暂存区*

git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤

1.3.6 *移除文件*

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。

用 --cached 选项即可:

$ git rm --cached readme.txt #不再跟踪这个文件

1.3.7 *移动文件*

要在 Git 中对文件改名

$ git mv file_from file_to

其实,运行 git mv 就相当于运行了下面三条命令

$ mv README.txt README

$ git rm README.txt

$ git add README

1.4 *查看提交历史*

在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看

*选项**说明*
-p按补丁格式显示每个更新之间的差异。
–word-diff按 word diff 格式显示差异。
–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(后跟指定格式)。
–oneline–pretty=oneline --abbrev-commit 的简化用法。

*gitk* *图形化工具*

1.5 撤销操作

1.5.1 *修改最后一次提交*

$ git commit -m ‘initial commit’

$ git add forgotten_file

$ git commit –amend

上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。

1.5.2 *取消已经暂存的文件*

git reset HEAD … 的方式取消暂存

1.5.3 *取消更改*

git add .

git reset --HARD

1.5.4 *取消对文件的修改*

git checkout – …

该文件已经恢复到修改前的版本。你可能已经意识到了,这条命令有些危险,所有对文件的修改都没有了,因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前,请务必确定真的不再需要保留刚才的修改。

1.5.5 *返回某旧的版本*

git log

取得各个版本信息

1.6 *打标签*

1.6.1 *列出已有标签*

git tag

1.6.2 *新建标签*

Git 使用的标签有两种类型:轻量级的(lightweight)和含附注的(annotated)。

创建一个****含附注类型的标签****非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可

$ git tag -a v1.4 -m ‘my version 1.4’

可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

****轻量级标签****实际上就是一个保存着对应提交对象的校验和信息的文件。要创建这样的标签,一个 -a,-s 或 -m 选项都不用,直接给出标签名字即可:

$ git tag v1.4-lw

2 *分支*

创建一个新的分支 git branch

$ git branch testing

要切换到其他分支,可以执行 git checkout 命令。我们现在转换到新建的 testing 分支

$ git checkout testing

2.1 *分支的新建与合并*

2.1.1 *分支的新建与切换*

要新建并切换到该分支,运行 git checkout 并加上 -b 参数:

$ git checkout -b iss53

这相当于执行下面这两条命令:

$ git branch iss53

$ git checkout iss53

用 git merge 命令来进行合并:

$ git checkout master

$ git merge hotfix

使用 git branch 的 -d选项执行删除操作:

$ git branch -d hotfix #Deleted branch hotfix (was 3a0874c).

2.1.2 *分支的合并*

在这里插入图片描述
在问题 #53 相关的工作完成之后,可以合并回 master 分支。实际操作同前面合并 hotfix 分支差不多,只需回到 master 分支,运行 git merge 命令指定要合并进来的分支:

$ git checkout master

$ git merge iss53
在这里插入图片描述

2.1.3 *遇到冲突时的分支合并*

这种问题只能由人来裁决。

2.2 *分支管理*

git branch

如果不加任何参数,它会给出当前所有分支的清单:

$ git branch

iss53

* master

Testing

若要查看各个分支最后一个提交对象的信息,运行 git branch –v

2.3 *分支的衍合*

在这里插入图片描述
在这里插入图片描述
把在 C3 里产生的变化补丁在 C4 的基础上重新打一遍。在 Git 里,这种操作叫做衍合(rebase)。有了 rebase 命令,就可以把在一个分支里提交的改变移到另一个分支里重放一遍。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值