git学习:
git文件状态
已跟踪(初始化仓库时,仓库中所有的文件都属于已跟踪和未修改状态)
1.跟踪新文件git add newFile 状态转变为
Changes to be commited:(说明跟踪文件之后的状态是放入了暂存区)
2.当你修改了这个文件的时候(echo ‘myGit’>README)
README文件刚才是 Changes to be commited 状态 ,现在转变为
Changes not staged for commit:(说明跟踪的文件发生了变化,但是没有放到暂存区,
想要提交这种文件,应该首先是放到暂存区git add thisFile)
注意:只有放到暂存区的文件才能提交保存
3.当你git add newFile之后再次修改之后,
文件会同时出现在Changes to be committed:和Changes not staged for commit:
此时:
<1>.Changes to be committed:这个里面是上次git add 的文件,而不是修改之后的文件
<2>.Changes not staged for commit:修改之后的文件,但是还没有保存到暂存区
要想提交最新版本还是需要对于修改之后的文件git add changedFile,放到暂存区之后一次性提交
未跟踪
1.untracked未跟踪状态,不在上次快照,也不再暂存区
//注意:
如果觉得git status的输出过长可以使用简短
git status -s 和git status --short(一般全拼用–,简短的用-)
输出结果格式:
<文件状态> <文件名称>
<输出状态> == <暂存区状态:工作区状态>
//左边就是暂存到暂存区的文件目前的状态,右边就是没有提交到暂存区的文件的状态,需要提交到暂存区
文件状态说明:
??:表示出现在仓库但是没有被跟踪的文件
A:表示添加到暂存区的文件
M:修改过的文件
git忽略文件
当你在在仓库中的文件不是全部想要跟踪的话,可以忽视某些文件
1.创建.gitignore
2.在文件中记录忽视的文件,形式如下:
忽略所有的 .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
//如果觉得格式不够的话,访问https://github.com/github/gitignore
查看暂存的的文件的修改(这一次修改没有放到暂存区):git diff
//注意:只显示尚未暂存的修改
查看已经暂存的文件,将要在下次提交的内容:git diff --staged
全部存到暂存区之后可以进行提交:
git commit -m ‘注释’
查看历史提交:
git log
查看历史提交的差异,以及限制条目数:
git log -p -数字
//数字表示显示最近的几条记录
按照特定格式输出:
git log --pretty=format:"%h - %an, %ar : %s — %cn"
提交之后如果发现丢下一个文件没有提交:
采用补交的方法:
在上次提交之后紧跟着
首先是将未提交的文件添加到暂存区
git add forgettedFile
之后是使用
git commit --amend
取消暂存:
git reset HEAD fileName
当你想要将Changes not staged for commit:状态的文件,修改但是没有提交的文件,还原成上一次提交的状态:
git checkout – changedFile
克隆仓库:
git clone https://github.com/schacon/ticgit<这是一个仓库>
查看仓库的名称:
git remote
//默认是origin
查看仓库的名称和对应的url
git remote -v
添加远程仓库:
git remote add originName url
拉取仓库中自己没有的东西:(只会下载,不会合并到自己的分支)
git fetch url/originName
拉取仓库并且合并:(从远程仓库克隆时候,会自动默认本地master分支自动追踪远程仓库的默认分支)
git pull url/originName
推送自己的项目到远程仓库中:
git push
remote:是想要推送的远程仓库
branch:是想要使用自己的哪个分支
//注意:只有在没有人推送过的时候才可以这样使用,如果之前有人推送过,之后你的推送会被拒绝
//解决办法:先拉取别人的工作并且合并到自己的分支,自此推送
查看远程仓库:
git remote show origin
远程仓库重命名:
git remote rename oldName newName
移除远程仓库:
git remote remove/rm name
打标签:
1.列出标签:git tag
2.创建标签:git tag -a 表明名称 -m “标签信息” 轻量的可以使用:git tag 标签名称
3.如果想要显示的将标签一起推送的话:git push origin
4.删除标签:git tag -d
//不会删除远程的标签,如果想要删除远程的标签:
git push origin --delete