git diff 可以查看已经添加到 index 中的文件在 workspace 中的变化,那么我们如何查看已经 commit 到本地仓库中的文件在 index 中的变化呢?
-
git diff --staged <file>
:该命令可以满足上面的需求:
我们的文件一般会提交到远程的 Gitee 或 GitHub 仓库中,为了方便我们可以在每次不输入密码的情况下 push,需要为远程的仓库生成公钥,为本地仓库生成密钥,这样才能在本地仓库与远程仓库之间通过无需输入密码的方式进行 push 和 pull。
生成密钥和公钥的命令如下:
-
ssh-keygen -t rsa -C "Gitee或GitHub上设置的邮箱地址"
出现让你输入的地方不用管,那是让你指定公钥和密钥的生成位置,使用默认的即可(C:/Users/dell/.ssh/),一路回车即可。出现如图所示的界面说明公钥和密钥生成成功,到公钥和密钥所在的文件夹中找到公钥文件:
打开 id_rsa.pub 文件,把里面的内容(公钥)复制出来,粘贴到 Gitee 或者 GitHub 设置 SSH 公钥的地方(以 Gitee 为例):
然后点击确定,输入你的 Gitee 密码,生成公钥如下:
OK,现在测试本地仓库与远程仓库之间的连通性:
-
ssh -T git@gitee.com
:如果是 github 的话,后半部分替换成 github.com 即可。能够出现如下图所示的打招呼信息说明已经连通:
这时候我们就可以把 gitee 上的项目克隆到本地了:
-
git clone <SSH克隆地址>
:
然后我们在克隆下来的项目中修改文件,就可以直接 push 到 gitee 了:
git push
:把本地仓库中的内容推送到远程仓库。
如果有这样的一种情况:本地已经初始化了一个仓库,并没有与远程仓库建立联系,想把本地仓库中的内容 merge 到远程仓库中,怎么做?
-
git remote add origin <远程仓库的SSH地址>
:与远程仓库建立联系。
-
git pull origin master --allow-unrelated-histories
:把远程仓库中的内容 pull 到本地工作目录。
注:Git 从版本2.9.0开始,pull 不允许合并没有共同祖先的分支,而我的 Git 版本是 2.18.0,所以需要加上参数
--allow-unrelated-histories
参数,允许合并没有共同祖先的分支。 -
git push -u origin master
:在 pull 下来的项目中做修改,然后就可以通过以上命令 push 到远程仓库了。
还有一个需要慎用的命令:git push -f
,把本地仓库中的内容强推到远程仓库,这个命令会覆盖掉远程仓库中原有的所有内容,远程仓库中没有内容还好,有内容的话就得考虑清楚,建议个人的项目可以这么做。