Git简单使用笔记

栏目: 编程工具 · 发布时间: 5年前

内容简介:前段时间参加了刚好最近也打算开始好好整整建立初始版本库有两种方法:从头开始创建或者克隆一个已有的版本库,下面是从头创建,执行后会有个.git隐藏文件夹

前段时间参加了 生物信息学创新协作小组 Openbiox 中的 XenaShiny 开发小组( 主要根据Xena数据库的API,以shiny app形式展示,提供数据下载及相关分析等功能,已打包成R包可供下载安装 ),第一次参与协作开发任务,才发现自己原来所掌握的Git知识点还是过于简单了,因此买了本Git相关书籍从头了解下,并做笔记以便查阅(当然有时翻书更加方便)

刚好最近也打算开始好好整整 Github 仓库

初始化版本库

建立初始版本库有两种方法:从头开始创建或者克隆一个已有的版本库,下面是从头创建,执行后会有个.git隐藏文件夹

git init

查看版本库状态

使用 git status 查看版本库状态(非常常用),Git将所有文件分成3类:已追踪的(Tracked)、被忽略的(Ignored)以及未追踪的(Untracked)

echo "New data" > data
git status

如果有些文件不想做追踪,想让Git忽略目录中的某些文件,只需要将其添加到 .gitignore 中即可

touch main.o
git status
echo main.o > .gitignore
git status

添加/删除文件到版本库

使用 git add 添加文件到版本库,添加当前目录全部文件可用 . 表示,上述data文件从Untracked变成了to be committed;使用 git add 后,文件被暂存和追踪,准备在下个提交的时候加到版本库中;每个文件可被SHA1值来索引

git add data .gitignore
git git status
git ls-files --stage

接下来提交的是索引中的暂存的文件,而不是目录中的文件,因此有时工作目录下的文件版本会跟索引中的不一致;使用 git commit 来执行提交,如果使用 git commit --all ,Git会历遍整个版本库,暂存所有 已知的和修改的 文件,然后提交它们

git commit -m "first-operation"
git status

如果想在版本库和工作目录中同时删除文件,可以用 git rm 命令;如果文件已修改但未提交,可用 git rm -f 来强制删除

git rm data
git ls-files --stage

如果想找回已删除文件,还是可以恢复回来的

git checkout HEAD -- data

如果是只从工作目录中删除,那么 rm 即可,但是这样做的话,索引还是存在的即已暂存;如果想从已暂存转化为未暂存,则可以使用 git rm --cached

touch temp
git add temp
git status
git rm --cached temp
git status

文件重命名

使用 git mv 对文件进行重命名

git add data
git mv data mydata

查看提交日记

使用 git log 查看提交日记

git commit -m "my-data"
git log mydata

Git允许很多分支,因此在同一个版本库中可以有许多个不用的开发县。默认每次你提交到Git的文件都会被储存到master(主干)分支

分支操作

创建分支,用 git branch 命令,默认是在当前工作的分支上的最近提交启动一个新的分支

git branch dev-kgu

git branch 列出分支名,星号 * 开头的分支表示当前已检出的分支

git branch

查看分支,用 git show-branch ,其提供更加详细的分支信息输出,按时间以递序的形式列出对一个或对个分支有贡献的提交,结果显示如下:

$ git show-branch
! [dev-kgu] my-data
 * [master] my-data
--
+* [dev-kgu] my-data

结果形式被一排破折号分为两部分,上方的部分列出分支名,星号(*)代表当前分支,不然以感叹号(!)标记;下方则是每个分支的提交矩阵,会看到有加号(+)、星号(*)或减号(-)出现的开头,其含义为:加号表示提交在一个分支中,星号突出显示存在于当前活动分支的提交,减号表示一个合并提交

检出分支,用 git checkout ,值得注意的是:如果工作目录中有文件修改但未提交则会报错

git checkout dev-kgu

如果不愿意保留上述修改,则可以加 -f 强制执行检出;如果想将修改保留在当前分支的话,则需要先 git commit ;如果想将修改保留在新检出的分支上,则需要加 -m 参数,如:

git checkout -m dev-kgu

如果主分支上修改了文件,并想将该修改提交到分支上,那么只需要在文件修改后对分支进行检出即可

创建并检出新分支,可以将创建-检出写成一行命令 git checkout -b new-branch

删除分支,加 -d 参数

git checkout -d dev-kgu

如果需要将分支的内容合并到主分支上,则需要用到 git merge 命令,比如将dev-kgu分支合并到master主分支上

git checkout master
git merge dev-kgu

如有冲突的合并,Git并不解决冲突,这通常出现在对同个文件的同一处进行修改的时候;Git把这种争议性的修改在索引中标注为unmerged

diff操作

git diff 也是一个比较常用的命令,用于查看工作目录、索引、HEAD之间的差别:

git diff
git diff HEAD
git diff --cached

更改提交

更改提交在Git操作中很普遍,可以让版本库中某个提交的工作目录、索引及HEAD进行修改

git reset 有以下三点用法:

git reset --soft
git reset --mixed
git reset --hard

git cherry-pick 可以在不改变版本库中的现在历史记录,而是添加历史记录

git revert 用于引入一个新提交来抵消给定提交的影响,不修改版本库的现存历史记录,常见用途是撤销历史记录中的某个提交的影响

修改最新提交,即改变当前分支最近一次提交可用 git commit --amend

git rebase 命令是用来改变一串提交以什么为基础的

git rebase master branch

推送至远程仓库

git push 命令可将当前master分支推送到origin远程版本库

git push -u origin master

如果要推送分支,则

git push -u origin dev-kgu

如果想从远程仓库中拉一份克隆,可用 git clone 命令

如果想获取远程的分支,即将远程分支dev-kgu克隆到本地并命名为dev-kgu,可以在 git clone 后,再 git checkout -b dev-kgu origin/dev-kgu

git pull 命令可以拉取远程仓库更新本地仓库,如拉取远程仓库的分支来更新本地分支

git pull origin dev-kgu

以上内容均为书籍及网上资料所整理的,一些常用的命令简单的解释,具体Git原理以及每个命令对应的详细解释推荐看书籍效果更好哈

本文出自于 http://www.bioinfo-scrounger.com 转载请注明出处


以上所述就是小编给大家介绍的《Git简单使用笔记》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

订阅

订阅

[美] 罗伯特·金奇尔、马尼·佩伊万 / 中信出版集团 / 2018-12 / 68.00元

数据显示,年轻人现在每天看视频的时间已经超过电视。YouTube 平台每天的视频观看总时长超过10亿小时,这个数字还在增长。数字视频牢牢占据着人们的注意力。 数字时代如何实现创意变现?视频平台如何提升自己的品牌认知和广告号召力?想要在这个庞大的媒体生态中占据流量入口,你需要先了解 YouTube。在过去的10年里,互联网视频平台 YouTube 已经像60多年前的电影、广播和电视的发明一样,......一起来看看 《订阅》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码