学习笔记-Git基本操作

Git时间——初识版本控制工具

安装

在Git官网下载相应系统和版本的安装包。

配置身份,区分谁提交了代码

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

查看是否配置成功

git config --global user.name
git config --global user.email

创建代码仓库

进入需要创建代码仓库的项目的根目录,如AccountingApp,所有本地代码提交的代码会被提交到代码仓库中,如果有需要也可以推送到远程代码仓库中,执行以下命令:

git init

执行后在其根目录会生成一个隐藏的.git文件夹,用来记录本地所有的git操作,可通过ls-al命令来查看。

ls -al
git-1.png

如果想要删除本地仓库,只需要删除这个文件夹就行了。

提交本地代码

提交代码主要用到两个命令——add和commit。
add用于把想要提交的代码先添加进去。
commit则是真正地去执行提交操作。

git add build.gradle           // 添加build.gradle;添加单个文件
git add app                    // 添加app这个目录;添加一个目录
git add .                      // 添加该项目下所有的文件;添加所有文件
git commit -m "First commit."  // 真正提交代码;-m参数表示为该次提交添加信息描述,若没有会被认为是不合法的

Git时间——版本控制工具进阶

忽略文件

项目里的所有文件并不是都需要提交的。AS生成的项目中存在两个.gitignore文件,一个在根目录下,一个在app模块下,该文件是用来告诉git那些文件不需要提交,每一行代表要忽略的文件或是一类文件。配置好后,直接提交即可。

查看修改内容

查看文件修改情况的方法非常简单,只需要使用status命令就可以了,在项目的根目录下输入如下命令:

git status

比如修改MainActivity.java这个文件,然后执行git status命令。

如何才能看到更改的内容呢?这就需要借助diff命令了,用法如下:

// 查看所有文件的更改内容
git diff

// 查看指定文件的更改内容,如MainActivity.java
git diff app/src/main/java/com/jwstudio/accountingapp/MainActivity.java

其中,减号代表删除部分,加号代表添加部分。

撤销为提交的修改

有时候我们的代码可能会写得过于草率,以至于原本正常的功能,结果反倒被我们改出了问题。遇到这种情况时也不用着急,因为只要代码还未提交,所有修改的内容都是可以撤销的。

比如之前修改的MainActivity.java,可以使用checkout命令,用法如下所示:

git checkout app/src/main/java/com/jwstudio/accountingapp/MainActivity.java

重新运行git staus命令检查一下。

不过这种撤销方式只适用于那些没有执行过add命令的文件,如果某个文件被添加过了,这种方式就无法撤销其更改内容。

只不过对于已添加的文件我们应该先对其取消添加,然后才可以撤回提交。取消添加使用的是reset命令,用法如下所示:

git reset HEAD app/src/main/java/com/jwstudio/accountingapp/MainActivity.java

然后运行一遍git status命令,之后再执行checkout操作。

查看提交记录

可以使用log命令查看历史提交信息,用法如下所示:

git log
git-log.png

可以看到,每次提交记录都会包含提交id、提交人、提交日期以及提交描述4个信息。
当提交记录非常多的时候,如果我们只想查看其中一条记录,可以在命令中指定该记录的id,并加上-1参数表示我们只想看到一行记录,如下所示:

git log 52e3d157982aeb0810532a0aebed519915d5e2ae -1

而如果想要查看这条提交记录具体修改了什么内容,可以在命令中加入-p参数,命令如下:

git log 52e3d157982aeb0810532a0aebed519915d5e2ae -1 -p

Git时间——版本控制工具的高级用法

准备阶段:进入一个新的项目的根目录,然后打开Git Bash,然后执行提交操作:

git init
git add .
git commit -m "First Commit."

分支的用法

分支是版本控制工具中比较高级且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。

如果想要查看当前的版本当中有哪些分支,可以使用以下命令:

git branch
git分支示意图.png
git-branch.png

创建一个分支,命令如下:

git branch version1.0        // 名为version1.0的分支

分支前面的“*”号表示我们的操作还是在该分支上,可以使用以下命令进行切换:

git checkout version1.0      // 切换到分支version1.0上

各分支的操作互不影响。

可以使用以下命令对分支进行合并:

git checkout master
git merge version1.0

仅仅这样简单的两行命令,就可以把在version1.0分支上修改并提交的内容合并到master分支上。当然。在合并分支的时候还有可能出现冲突的情况,这个时候就需要静下心来慢慢地找出并解决这些冲突。

可以使用如下命令将不要的分支删除:

git branch -D version1.0

与远程版本库协作

所有版本控制工具最重要的一个特点就是可以使用它来进行团队合作开发。每个人的电脑上都会有一份代码,当团队的某个成员在自己的电脑上编写完成了某个功能后,就将代码提交到服务器,其他成员只需要将服务器上的代码同步到本地,就能保证整个团队所有人的代码都相同。

因此,需要有一个远程的版本库!

以GitHub作为示例:

  1. 登录GitHub,若没有账号注册一个。
  2. 点击右上角“加号”,选择“New repository”,然后填写“Repository name”,还有填写描述“Description”,public和private表示是公开还是私有的。
github-1.png
  1. 创建完成后,复制Git地址,比如https://github.com/example/test.git,有HTTP和SSH两种方式。
github-2.png
  1. 执行以下命令:
git init
git add .
git commit -m "First Commit."
git remote add origin https://github.com/example/test.git  // 与GitHub进行关联
git push -u origin master                                  // 会提示让你使用GitHub账号登录
  1. 在GitHub上刷新下,会发现本地代码已成功上传。
  2. 大致的流程就是这样子,可以根据需求更改。

其中,origin部分指定的远程版本库的Git地址,master部分指定的是同步到哪一个分支上。

比如说现在有一个远程版本库的Git地址是https://github.com/example/test.git,就可以使用如下命令将代码下载到本地:

git clone https://github.com/example/test.git

接下来看一下如何将远程版本库下的修改同步到本地。Git提供了两种命令来完成此功能,分别是fetch和pull,fetch的语法规则和push是差不多的,如下所示:

git fetch origin master      // origin含义同上

执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上,而是会存放到一个origin/master分支上,这是可以通过diff命令来查看远程版本库上到底修改了那些东西:

git diff origin/master

之后在调用merge命令将origin/master分支上的修改合并到主分支上即可,如下所示:

git merge origin master

而pull命令则是相当于将fetch和merge这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地,如法如下所示:

git pull origin master

Git时间——将代码托管到GitHub上

可以使用一个新的项目从头到尾进行实战!

补充

  • 廖雪峰-Git教程
  • git commit --amend:既可以对上次提交的内容进行修改,也可以修改提交说明。需要先对修改后的代码进行手动git add,再执行命令。执行该命令后,直接push一般会失败,原因是分支落后,可以解决问题后再push;也可以使用强推git push --force-with-lease origin 远程分支名称。(参考博客
  • 撤销push,并同步到远程
  • git revert <commitId>:撤销指定的commit,对其它commit没影响
  • git stash:暂存当前分支的改动,针对还没开发完的分支
  • git stash pop:恢复当前分支的改动
  • git stash list:查看是否有stash操作
  • reset:在本地reset后,同步到远程仓库参考博客
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容

  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,511评论 0 13
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,661评论 9 163
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,663评论 4 54
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,425评论 0 7
  • NO.5 谭宗明 其实老谭是个超有魅力的人。如果奉为男神,一定无可厚非。但这里说的是男朋友,是要和你一起过生活的人...
    文琪来啦阅读 495评论 0 1