曾经修改论文名列表[论文1……论文100,论文终稿1……终稿100,不改稿……不改稿100,………坚决不改100]
现在妈妈再也不用担心我的论文名了。
本文只记录Git命令行的使用,不讲解原理、概念和安装等。
本地创建和管理仓库
- 创建版本库
要在本地管理多版本最重要的是本地创建版本库。命令很简单,新建存储目录切换到该目录下,执行:
1 | git init |
接下来就可以添加文件进行版本控制了。
- 添加文件
通过命令将文件添加到仓库,如将A.txt添加到仓库。
1 | git add A.txt |
可以通过 git add . 添加当前目录下所有文件
- 提交文件
接下来,还需要告诉Git你添加文件的信息,把文件提交到仓库。
1 | git commit -m '201806241700update' |
-m后面跟的就是更改的信息,可以不添加信息,用 git help commit 命令自己查看吧(强烈不建议!!)。
- 查看当前状态
多次修改文件,添加和提交后。通过命令查看当前仓库的状态
1 | git status |
- 查看更改内容
通过命令查文件被更改的具体内容:
1 | git diff |
diff 跟具体文件查看特定文件的更改内容。
- 查看提交记录
通过命令可以查看由近到远的提交记录:
1 | git log |
命令会给出 commit 、 Author 、 Date 和提交-m中的信息。commit后面跟的是id版本号。这个id非常重要,版本的控制会用到。
- 版本控制
多此修改提交后,想退回某个版本怎么办呢?
上面 log中的id就可以帮我们了。
退回到某个版本的命令是:
1 | git reset --hard id |
id不需要像log中的那么长,前几位id代码就可以确定了。
当然跳回上一版本或者上面的有限版本可以使用 ^ 和 ~100 。
- 撤销修改
1 | git checkout -- A.txt |
可以撤销当前对A.txt的修改。checkout还有一个用法是切换分支
本地与远程仓库同步
主要指与GitHub的同步。
- 关联远程仓库
1 | git remote add origin git@username:path/repo-name.git |
- 内容推送
将本地内容上传到远程仓库。
1 | git push |
- 克隆远程仓库
从远程克隆仓库到本地
1 | git clone git@github.com:*****.git |
注:第一次同步最好加上-u参数,实现远程和本地关联,方便以后版本更新和回退。(存疑)
创建和合并分支
前面说到的Git是按照时间顺序作为线索的,而且只有一条master的主分支。可以理解为时间线上的一个指针。创建分支可以理解为在时间线上新建一个指针。分支之间的合并就是指针之间的合并。
- 创建分支
1 | git branch branch-name |
1 | git branch |
可以查看创建的所有分支,并在当前分支上加*显示。
- 切换分支
1 | git checkout branch-name |
- 创建和切换分支
可以通过 checkout的 -b 参数创建并切换到创建的分支。
1 | git checkout -b branch-name |
- 合并分支
将branch-name合并到当前分支中:
1 | git merge branch-name |
注:合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
- 删除分支
1 | git branch -d branch-name |
- 分支冲突
待详细了解。 - 分支的暂存
分支没有提交但是需要切换到其他分支中工作,可以通过将分支暂存然后恢复的策略。(比如临时修复bug)
分支暂存
1 | git stash |
恢复分支
恢复分支的策略有两个:一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop恢复的同时把stash内容也删了。
1 | git stash apply |
1 | git stash pop |
注:可以多次 stash通过git stash list查看,然后用git stash apply stash@{0}恢复指定stash。
- 多人协作分支冲突
待详细了解。标签管理
相当于vi,v2这种版本的记录。 - 创建tag
1 | git tag <name> |
注: 省略
默认标签是打在最新提交的commit上,想要补充未tag的commit可以通过如下命令补充:
1 | git tag v0.9 commit_id |
可以用git show tagname查看标签信息
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
1 | $ git tag -a v0.1 -m "version 0.1 released" commit_id |
- 推送整个版本的内容:
1 | git push origin <tagname> |
- 删除tag
1 | git tag -d tag_name |
如果已经提交到远程git push origin :refs/tags/tagname可以删除一个远程标签
其余
- 搭建Git服务器
资料 - 历史命令列表
查看使用过的命令,同时记录了当时提交的id,这样产看记录的同时也可以找到误删的版本。
1 | git reflog |
- git fork
fork 别人的代码,提交到自己的github 然后发起pull request提交给原作者 - git自定义功能
git config –global ….的组合命令. - 注:
版本控制工具只能跟踪文本文件的改动。
使用 git revert <commit_id>操作实现以退为进,git revert 不同于 git reset 它不会擦除”回退”之后的 commit_id ,而是正常的当做一次”commit”,产生一次新的操作记录,所以可以push,不会让你再pull。