赞
踩
到官网下载GIT:https://git-scm.com/downloads
在要创建仓库的文件夹空白地方点击右键
在弹出的菜单中点击"GIT Bash Here", 然后初始化仓库。
$ git init
成功后该文件夹中会多出一个".git"的隐藏文件夹,这个目录是GIT用来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。
.git是隐藏文件夹,要设置显示隐藏文件夹后才可见。
1.打开文件夹选项
或
2.设置隐藏文件为显示
记住,确认有.git文件夹存在就行了,不要随便改动里面的内容。
$ git status
红色的是未添加到暂存区的文件,如果是刚创建的仓库,git status后该文件夹中的所有文件都会是红色,因为这些文件还没加入过暂存区,都是"untracked files"(未被跟踪文件)。
$ git add source1.c
$ git add source1.c source2.c source3.c
$ git add .
添加到暂存区后,查看一下仓库状态,添加后的文件变成绿色
如果想清除新增的文件,或从未track过(加入过暂存区)的文件,可以用下面的命令。
例如:新增了source4.c和source5.c,或者说创建本地仓库后从未加入过暂存区,现在想清除掉。
$ git clean -n
$ git clean -f
执行后,文件夹中的source4.c和source5.c会被删除掉,再次git status(查看仓库状态)就看不到这两个文件的提醒了
$ git clean -f <路径>
$ git clean -df
$ git clean -xf
一般我们总会有些文件无需纳入 Git 的管理,不需要添加和提交,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
例如,有个临时文件叫file1.txt,还有编译过程中生成汇编文件(*.o),我们想忽略掉。
在还没有.gitignore文件的时候,查看状态时会显示这个未跟踪文件。
先看下在window下创建的情形
新建文档后,出现下面文件。
改名。
出错!因为我们要创建名称为空,后缀为.gitignore的文件,而window中创建文件必须得有名称。
那咋整?
方法还是有的,我们可以到git base的黑框中创建。然后用vim或vi编辑器编辑,或者在目录中双击打开编辑也没问题。
创建并编辑好.gitignore文件(编辑过程放在本小节末尾)后,我们再查看一下仓库状态。
可见,之前显示未跟踪的文件已经被忽略掉了。
接下来我们可以把.gitignore添加并提交,这样我们最新版本中就有.gitignore文件了。
但是,如果该文件已经在仓库中,那忽略就无效了。
例如,source1.c已经是仓库中的文件,newfile.txt是新建但已加入暂存区的文件,我们现在要忽略它们。
可见,忽略是无效的,source1.c改动后,还是会有相应的提醒。暂存区的newfile.txt也还在,而且如果继续对newfile.txt有改动,还会出现相应的提醒。
可见,如果要忽略某文件,要先确保此时它不在仓库和暂存区中。
如果它们已经在仓库和暂存区中了,那唯一的办法就是将它们清除出来。
如下图:
下面是vim编辑器编辑的过程。
执行$ vim .gitignore命令后,vim编辑器打开.gitignore文件(空文件),此时是vim编辑器的正常模式,点击i即可进入插入模式(可编辑)。
1.所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
2.可以使用标准的 glob 模式匹配。
3.匹配模式最后跟反斜杠(/)说明要忽略的是目录。
4.要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。
例如:
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
/、/* 和 !
/OBJ/
表示忽略OBJ目录下的所有文件。
/OBJ/
!/OBJ/UWB.sct*
表示忽略OBJ目录下的文件,UWB.sct除外。
“!”用来恢复追踪,但如果文件所在的目录被忽略了,这个文件无法恢复追踪。
* 和 **
/a/*/b 只能匹配a的二级子目录的b, 比如a/x/b
/a/**/b 可以匹配a的任意级子目录的b,比如a/b, a/x/b, a/x/y/b …
$ git rm --cached source1.c
提醒:如果要清除多个文件,列在后面即可。
执行后:
删除仓库中的文件的请求添加到暂存区,提交后生效。
取消对该文件的跟踪,立刻有效
工作区中的文件及其改动还在,只是这个改动没有添加到暂存区。
$ git rm source1.c
提醒:如果要清除多个文件,列在后面即可。
命令执行后:
源文件立即被删除,而删除仓库中的文件是提交后才生效。
$ git status
这个就是工作区中有变动的跟踪文件。
$ git diff
$ git diff soure1.c
提醒:如果要查看多个文件,列在后面即可。
红色为删除的内容,绿色是增加的内容。
有时候可能只是改动了一两个文件,但编译后git status时发现一大堆文件有改动(标红),如果直接用git diff,下面的内容多到让你怀疑人生。所以,我们可以针对也看某类或某几类文件的改动。
提醒:如果要查看多个类,列在后面即可。
$ git diff *.c *.h
当然,更好的方法是用.gitignore文件到忽略那些中间文件,不去踪它们。具体操作请看5.6.1小节。
$ git checkout -- source1.c
提醒:如果要清除多个文件,列在后面即可。
例如:上图的"modified: source1.c"就表明暂存区中的文件source1.c已发生了改动,可用$ git checkout – source1.c来放弃这个改动。
$ git checkout .
$ git checkout . && git clean -df
例如:当前目录有source1.c、source2.c和source3.c,上次已全部加到暂存区。
后来,增加了source4.c,而且把source3.c的内容改为:333。
查看仓库状态,可以看到,当前目录与上次加入暂存区(git add)相比,所有的改动。
如果想丢弃这些改动,可以用:$ git checkout . && git clean -df
根据上面的内容可知:
$ git checkout . 是丢弃被跟踪的文件在工作区中的改动,如上面的source3.c的改动
$ git clean -df 是丢弃未跟踪过的文件,如上面新增的source4.c
这两个命令执行后,跟踪的文件就可以恢复上次git add后的状态。
$ git status
上图中,"modified: source1.c"表示该文件有改动,要把这个提示处理掉才能提交。
方式1 把这个改动更新到暂存区,可以用:
$ git add source1.c "或 "$ git add .
方式2 把这个改动丢弃掉,可以用:
$ git checkout -- source1.c
$ git add sorce1.c //把source1.c加到暂存区
或
$ git add . //把当前目录中所有文件加到暂存区
$ git commit –m “注释内容”
这样只是提交到本地仓库,要推送到远程仓库(github)中保存,要有以下条件或操作:
1.拥有一个github帐号
2.创建github仓库
3.在本地创建SSH KEY,然后添加到github的允许列表中
4.建立本地和github仓库的关联
$ git commit --amend
$
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。