0. 总览
简单来说,Git是一个管理你的【代码的历史记录】的工具。管理代码历史记录。
-
Repository
【代码仓库,一起写小说的笔记本】 -
Fork
【变成自己的,从而进行任意想要的修改】 -
Clone
【下载Repository里的干货到本地】
比如总共发布(release
)了多少个版本,有多少人参与开发(contributors),多少次提交记录(commits),多少个分支(branches),文件的详细目录等等。Apache-2.0是什么意思?
以下是代码的不同历史记录,应该是选择好你到底要哪个版本,才去点clone or download
按钮。
Git pull与Git fetch
什么区别?
外文网页文献
共同之处: 都能从remote repository下载new data.
1. Git pull做了个啥子呢?
Pull requests let you tell others about changes you’ve pushed to a branch in a repository on GitHub. Once a pull request is opened, you can discuss and review the potential changes with collaborators and add follow-up commits before your changes are merged into the base branch.
拉取请求可让您告诉其他人已推送到GitHub信息库中分支的更改。 打开拉取请求后,您可以与协作者讨论和审查潜在的更改,并在更改合并到基础分支之前添加后续落实
。
2. Git fetch做了个啥子呢?
感觉就是查看远程都发生了什么变化? 但不把变化集成到local files
. 是harmless
的, 永远不会操纵,摧毁, 或者破坏(screw up
)任何东西.
找个github库试一下:
在我自己的Microsoft语义对齐的库上用了下:
这也不显示到底有什么变化和不同, 而是只是显示两次的branch名字差异
.
Git remote -v
对于,我的本地和remote不一致的库:
也会显示一个(fetch)和一个(push).
我们知道: 就算对我本地和remote都一致的库, 仍然是如图所示的两个:
因此, 这个命令对于排故作用不大啊.
Git 删除Git repository的文件
git rm file.txt
remove the file from the Git repository and the filesystemgit rm --cached file.txt
remove the file only from the Git repository and not from the filesystem
Git 删除Git repository的目录及内部内容
git rm -r directory_name
git rm -r --cached directory_name
Git 重新命名远程库中的文件
Git 恢复,撤销,错误删除
git status
git reset HEAD *.py
git checkout *.py
首先,输入git status查看工作区的状态。
git status
确实,在git rm main.py
后,本地的main.py文件不见了,
然后的话,但是因为还没commit,远程上的main.py
还在.
那么,到底该如何恢复呢,具体的恢复做法如下:
其实在git status
命令后已经告诉我们该怎么做了。也就是,git reset HEAD <file>
to unstage(让改变不上台面).
git reset HEAD main.py
输入这个后,然后我们得到如下截图:
意思就是让你之前的改变不上台,确实做到了,过去式的英语表达也告诉已经在reset
后让改变没有上台。
在
reset后
, 我们发现再次typegit status
有一个字体颜色由绿变红的效果。
然后又提示git add
或者git commit
,所以,说明刚才的删除操作已经撤销了。
这样我们就能用checkout了
然后,刚才没有的main.py
这就又恢复回来了。
Git 不能merge了(因为git自己的保护机制)
错误信息详情如下:
解决方案如下:
Git 会protects you from losing important changes.
Git 不能pull了
步骤:
- 我先用
git status
看一下.
diverged
发散的. 意思是origin/master
这个branch
是发散的.
有一个版本吧,有四次commits
.
有另外一个版本吧,有2次commits
.
然后提醒说是可以用git pull
把remote branch给merge into到自己的. 但我试过了, 对于我的这个repo,这个不起作用. 会出现新的错误.
只要一pull
就会出现刚才那个错误. 也就是:
所以归根到底还是那个unmerge
出的问题.
对于上面这个问题, 我尝试了下面这个链接Stack Overflow的Akhzar Nazir
的方法,然后把这个问题解决了.
就是这个,
git add .
git add 里面git commit -m "commit content"
git push origin master
现在新的git status
如下:
至少不提示unmerge
了.
试试现在能不能正常commit和pull了?
都能了, 都正常了.