Bra*_*ton 1 git github gitignore
我是git for source control的新手.我想确保我能够理解一切,但是很早就发现了一些看起来很奇怪的东西.
这是我正在做的事情:
git clone [repo location] [local folder]
git commit
,产生一条消息,上面写着"未提交更改的更改",但将.gitignore列为已修改.所以最终我添加它,提交并推回原点,它显示了我对GitHub的更改.一切都很好.
这对我来说有点困惑.如果.gitignore没有被跟踪,那么它在世界上是如何被使用的git clone
呢?为什么我必须在允许我提交更改之前手动添加它?
这是git查看您的存储库的方式:
repository --- staging area --- working directory
Run Code Online (Sandbox Code Playgroud)
在存储库中,您将获得所有本地分支或fetch
ed远程分支中提交的所有内容.在工作目录中,您可以从一些提交中检出所有可能已修改的文件.暂存区域是您添加要提交的文件的位置,但尚未提交.这是因为在git中你可以选择要提交的内容(例如,与svn不同,你提交了被修改的内容).
我强烈建议您阅读本文,虽然重点关注git reset
,但它非常好地概述了git的工作原理.
这是一张小图片:
repository --- staging area --- working directory
| | |
| | |
| Check out |
|-------------------------------------->|
| | |
| | add |
| |<-------------------|
| | |
| commit | |
|<-----------------| |
Run Code Online (Sandbox Code Playgroud)
结账非常明显.第二个意味着您有选择地将文件添加到暂存区域然后提交它们.例如:
$ touch file1 file2 file3 file4 # modify files
$ git add file1
$ git add file2
$ git commit
Run Code Online (Sandbox Code Playgroud)
只提交file1
,file2
即使file3
并且file4
也被修改.
有时候,你想要的就是提供你所拥有的一切.它有一个快捷方式:
$ touch file1 file2 file3 file4 # modify files
$ git commit -a
Run Code Online (Sandbox Code Playgroud)
git commit
给定-a
选项会自动添加所有已修改的文件以提交
您甚至git add -p
可以暂存部分文件,这样做基本上可以显示提交补丁的各个部分,并允许您选择进行哪些更改以及不进行哪些更改.之后,git commit
您可以承诺上演的任何内容.
这不是特定的.gitignore
.git add
除非您使用git commit -a
自动提交所有更改,否则您必须在提交修改后的文件之前使用它们.