总是查总是忘,查别人的博客还不如查自己的,自力更生。

远程仓库

添加远程仓库

git remote add origin [url] //经常使用版本

git remote add <shortname> <url> //格式

这里的 shortname 之后就代表了这个仓库链接

查看远程仓库

git remote 

返回结果 origin,如果我还需要详细的地址的话,再加一个 -v

git remote -v

从远程仓库中拉取

git fetch [remote-name] //只是拉取

git pull //还会自动合并
git pull origin master //注意这条命令会直接把本地覆盖了,导致删库事件

该怎么恢复呢?

git reflog show //查看本地的操作记录

git reset HEAD@{2} //找到我想恢复的那一条 reset

会输出:

Unstaged changes after reset:
D	XXX
M	README.md

文件夹依然什么都没有

git add .
git reset --hard

输出结果:

HEAD is now at [commit XXXX]

现在什么都恢复了

提交到远程仓库

git push -u origin master //想要强行提交完全不一致的内容 用-f

git push [remote-name] [branch-name] //格式

查看远程仓库信息

git remote show [remote-name]

重命名远程仓库

git remote rename [原来] [修改后]

移除远程仓库

git remote rm origin

如果执行 git remote rm origin 报错的话,我们可以手动修改gitconfig文件的内容

vi .git/config

[remote “origin”] 那一行删掉就好了。

强制覆盖本地文件(与git远程仓库保持一致)

git fetch --all

git reset --hard origin/master

git pull

变成单条执行

git fetch --all && git reset --hard origin/master && git pull

和远程仓库内容合并

How to merge remote master to local branch?

git fetch
git rebase origin/master

删除文件

如何删除git所有记录

rm -rf .git 

如何删除已上传的文件和文件夹

git rm -r --cached app

删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制

git pull origin master VS git pull origin/master

git pull origin master will pull changes from the origin remote, master branch and merge them to the local checked-out branch.

git pull origin/master will pull changes from the locally stored branch origin/master and merge that to the local checked-out branch. The origin/master branch is essentially a “cached copy” of what was last pulled from origin, which is why it’s called a remote branch in git parlance. This might be somewhat confusing.

You can see what branches are available with git branch and git branch -r to see the “remote branches”.

其它

fork仓库更新

如何将fork别人的仓库中的代码更新至最新版本? 摘自链接

git remote add upstream git@github.com:xxx/xxx.git
git fetch upstream
git merge upstream/master
git push 

submodule使用

git submodule add <submodule_url>  # 添加子项目

git submodule init  # 初始化本地.gitmodules文件
git submodule update  # 同步远端submodule源码

git clone --recurse-submodules <main_project_url>  # 获取主项目和所有子项目源码

git fetch  # 获取submodule远端源码
git merge origin/<branch_name>  # 合并submodule远端源码
git pull  # 获取submodule远端源码合并到当前分支
git checkout <branch_name>  # 切换submodule的branch
git commit -am "change_summary"  # 提交submodule的commit

# or

# 更新submodule源码,默认更新的branch是master,如果要修改branch,在.gitmodule中设置
git submodule update --remote <submodule_name>  
# 更新所有submodule源码,默认更新.gitmodule中设置的跟踪分支,未设置则跟踪master
git submodule update --remote  
# 当submodule commits提交有问题的时候放弃整个push
git push --recurse-submodules=check
# 分开提交submodule和main project
git push --recurse-submodules=on-demand

有关博客主题子模块更新的流程

cd themes/even
git add *
git commit -m "XXX"

cd ../..
git add themes/even
git commit -m "XXX"

git push --recurse-submodules=on-demand


ChangeLog

之前记录的就算了

2019-11-24 今天我用了git pull origin master结果删库了,太可怕了,写一下怎么恢复;补充了和远程仓库合并的正确做法

2019-12-08 git pull origin master VS git pull origin/master