git命令详解
自己的仓库管理:
git add <filename>
- 将文件添加到暂存区中 (其中git add.可以将当前目录的子目录文件都添加到暂存区中)
git commit -m "...":
- 保存仓库的历史记录,其中 -m "…"提交信息(概述)
git config --global user.name "..."
、git config --global user.email "..."
:
- 配置提交作者信息
git log
:
- 查看提交日志(当前状态为终点) 会产生版本库里一系列单独提交的历史
git diff ID1/ID2
:
- 查看版本差异
git mv 新名字,旧名字
- 重命名:
git branch -a [-v]
- 分支一展表, -r 查看远程git服务器上的分支
git checkout 分支名
:
- 切换分支
- -b创建,且切换到新建分支 等价于
git branch 分支名
+git checkout 分支名
git branch -d [分支名称]
- 删除一个分支, -d选项只能删除已经参与过合并的分支,对于未参与合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项、
git rest --head ID
:
- 退回之前提交版本
git status
:
- 查看仓库当前状态;
git reflog
:
- 查看当前仓库的操作日志
git rebase -i
:
- 压缩历史(如果出现拼写错误时需要):
git rebase -i HEAD~2
git merge --no-f 分支名
:
- 合并分支
git remote set-url origin https://github.com/Freedomisgood/NjuptGo.git
- 修改仓库指定新的远程仓库
git commit --amend
:
- 修改上次commit备注信息
远程仓库
如果本地没有仓库,则clone:
git clone http://github.com/xxx/yyy.git
在本地增加远程仓库信息:git remote add apollo3d http://github.com/xxx/yyy.git
,此时远程库名为origin、apollo3d
删除远程分支git push origin --delete kickof
git push代码到远程新分支
git push origin master:my_remote_new_branch
git pull
如果本地有仓库,则拉取更新命令为:
git pull <远程库名> <远程分支名>:<本地分支名>
比如,取回远程库中的online分支,与本地的online分支进行merge,要写成:
git pull origin online:online
如果是要与本地当前分支merge,则冒号后面的<本地分支名>可以不写
git pull origin online
通常,git会将本地库分支与远程分支之间建立一种追踪关系。比如,在git clone的时候,所有本地分支默认与远程库的同名分支建立追踪关系。也就是说,本地的master分支自动追踪origin/master分支。因此,如果当前处于本地online分支上,并且本地online分支与远程的online分支有追踪关系,那么远程的分支名可以省略:
比如,取回远程库中的online分支,与本地的online分支进行merge,要写成:
git pull origin
其实,git pull 命令等同于先做了git fetch ,再做了git merge。即:
1 | git fetch origin online |
git push
二.推送本地分支到远程仓库
(一).创建本地分支git checkout -b 新分支名
(二).推送本地分支到远程仓库git push --set-upstream origin 分支名
三、将远程git仓库里的指定分支拉取到本地(本地不存在的分支)
git checkout -b 本地分支名 origin/远程分支名
修改了.gitignore生效指令
1 | git rm -r --cached . // 删除本地缓存 |
参考
- Git远程操作详解:http://www.ruanyifeng.com/blog/2014/06/git_remote.html
- 使用git将项目上传到github(最简单方法):https://www.cnblogs.com/cxk1995/p/5800196.html
- <<Git入门与实践>>:日本
- Git恢复之前版本的两种方法reset、revert(图文详解)
采坑记录
Q: 不小心git reset --hard HEAD^
导致工作区文件全没了
A:解决方案:
-
Undo git reset --hard with uncommitted files in the staging area
-
根据这篇博客操作的结果
git cat-file -p ID > a.md
是个对比文件1
2
3
4
5
6
7
8
9
10
11100644 blob cdca566953e3b7b56897b2fa6995129170403212 Q-learning.ipynb
100644 blob 47735fcc505315aa61583dad9dc4facb7c00fbdc Q-learning.py
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 __init__.py
040000 tree db76babbe2f2df4566b607e732c0c835418f9a83 __pycache__
100644 blob debb716313cfbf28c055e89ce4a625a1d7801f5b agents.py
100644 blob 30ec43da68efe5eb5e8e31cb431fea981e256b6a approximator.py
100644 blob 1e8ac820d62943d16fa56fa981d72e27239527d9 core.py
100644 blob a0cfa7ac7f9f15a658ace5c5c7c5bbe73f680502 myringworld.py
100644 blob 69cb25ba30f4350454a0e731a70890cbf2530217 ringworld.py
100644 blob 5638e012cb1b68783e6cdf45d2e769cca96e591f utils.py
100644 blob 96aa662c03d991487e6da8120884b6f647be7202 viewer.py -
△.关于git reset --hard导致文件丢失的血的教训——亲测有效
-
解决add了但没有commit的文件,可以用上述方法找回
1
2
3
41. 执行 git fsck --lost-found;
2. 在.git/lost-found目录下找找看有没有你丢失的文件;
3.有的话复制出来,如果是文本,直接改成正确扩展名,你就笑了;
4. 没有的话,就再去Google吧;
-
分支git branch参数区别
Author: Mrli
Link: https://nymrli.top/2019/09/29/git命令详解/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.