版本管理工具 Git

命令行模式

配置身份

配置身份后,在提交代码的时候,Git就可以知道是谁提交的了

git config --global user.email "you@example.com"
git config --global user.name "Your Name"
image-20211209135206053.png

创建代码仓库

仓库(repository)是用于保存版本管理所需信息的地方,所有本地提交的代码都会被提交到代码仓库中,如果有需要还可以推送到远程仓库中

创建代码仓库命令:

git init
image-20211209132355630.png

仓库创建完成后,会在该目录下生成一个隐藏的.git目录,这个目录就是用来记录本地所有的Git操作的,可以通过命令查看一下

ls -al
image-20211209132457522.png

如果想要删除本地仓库,只需要删除这个目录就行了

提交本地代码

提交代码使用 add 和 commit 命令,add用于把想要提交的代码添加进来,commit则是真正执行提交操作

添加某个文件

git add 文件名

如果文件名包含空格,需要用引号引起来,如果只是存在中文,不需要使用引号

image-20211209133146574.png

添加某个目录

git add 目录名

添加当前目录

git add .

提交代码

git commit -m "First commit."

在 commit 命令的后面,一定要通过-m参数加上提交的描述信息


image-20211209135259053.png

撤销动作

撤销未添加的修改

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

git checkout 文件名

撤销已添加的修改

这种撤销方式只适用于那些执行过add命令,但还没有执行过commit的文件

git reset 文件名

撤销已提交的修改

这种撤销方式适用于那些执行过commit的文件,表示将当前工作区切换到上个 commit 版本

git restore -s HEAD~1 文件名

查看文件修改情况

查看有哪些文件修改了

git status
image-20211210202324803.png

查看某个文件具体修改了什么

git diff 文件名

不加文件名,可以查看所有文件的更改内容


image-20211210202639970.png

查看提交记录

git log
image-20211210204112893.png

如果我们只想查看某一个及之前的记录,可以在命令中指定该记录的id

git log ff66e7c73fb61d997980cf99e811287bb2f922fc
image-20211210204430533.png

也可以在命令中通过参数指定查看最近的几次提交,比如 -1就表示我们只想看到最后一次的提交记录

git log -1
image-20211210204528878.png

忽略文件

Git 允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的目录下是否存在一个名为.gitignore的文件,如果存在,就去一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。.gitignore中指定的文件或目录是可以使用“*”通配符的

在 .gitignore 文件中配置 test_ignore_file.txt 文件


image-20211210201805520.png

image-20211210201805520.png

执行添加命令,再查看状态,会发现将 test_ignore_file.txt 文件排除在版本控制之外了


image-20211210202019870.png

分支

分支主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响


image-20211212232716182.png

假如研发了一款软件,推出了1.0版本,但是马上又有了新的需求,需要投入到1.1版本的开发工作当中,过了一段时间,1.1版本的功能已经完成了一半,但是这个时候突然有用户反馈,之前上线的1.0版本发现了几个重大的bug,这个时候就没法修复了

如果在发布1.0版本的时候建立一个分支,然后在主干线上继续开发1.1版本的功能。当在1.0版本上发现任何bug的时候,就在分支线上进行修改,然后发布新的1.0版本,并记得将修改后的代码合并到主干线上。这样就可以解决1.0版本存在的bug,且保证了主干线上的代码也已经修复了这些bug,当1.1版本发布时,就不会有同样的bug存在了

查看当前的版本库当中有哪些分支

git branch
image-20211212233227820.png

创建一个分支

git branch 分支名
image-20211212233343397.png

master分支的前面有一个“*”号,说明目前我们的代码还是在master分支上的

切换分支

git checkout 分支名
image-20211212233559026.png

需要注意的是,在version1.0分支上修改并提交的代码将不会影响到master分支。同样的道理,在master分支上修改并提交的代码也不会影响到version1.0分支。因此,如果我们在version1.0分支上修复了一个bug,在master分支上这个bug仍然是存在的。这时需要使用merge命令来完成合并操作

合并

git merge 分支名

删除分支

git branch -D 分支名

与远程版本库协作

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

下载远程版本库的Git项目

git clone 地址

把本地修改同步到远程版本库

git push origin master

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

将远程版本库上的修改同步到本地

两种命令来完成此功能,分别是fetch和pull

fetch
git fetch origin master

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

git diff origin/master

之后再调用merge命令将origin/master分支上的修改合并到主分支上即可

git merge origin/master
pull

相当于将fetch和merge这两个命令放在一起执行,可以从远程版本库上获取最新的代码并且合并到本地

git pull origin master

Android Studio 工具模式

配置身份

image-20211211171045303.png

但是我点击 “Add Account...” 的时候,它打开一个网页,android studio 就一直是下面的页面


image-20211211171616114.png

因此我采用 “Log in with Token” 的方法,如下:


image-20211211180858323.png

点击生成 Token,需要登录 GitHub 账号,然后点击 Add Account 按钮完成身份配置
image-20211211181220178.png

创建代码仓库

在弹出的文件选择器中,选择项目的根目录


image-20211211165040138.png

添加文件

要添加哪个目录,就在哪个目录上右键


image-20211211165250417.png

提交文件

image-20211211165435154.png

弹出以下弹窗


image-20211211212351297.png

输入的 Name,当提交之后,会在 Git 页面显示


image-20211211212714109.png

Push 到远程仓库

image-20211211194622277.png

输入远程地址


image-20211211194735236.png

输入仓库地址后,出现以下错误

Remote URL test failed: unable to access 'https://github.com/xxx/xxx.git/': OpenSSL SSL_read: Connection was reset, errno 10054

服务器的SSL证书没有经过第三方机构的签署,所以报错

解决办法:

git config --global http.sslVerify "false"

提交到远程仓库


image-20211211195728968.png

问题

问题一

warning: LF will be replaced by CRLF in app/src/main/AndroidManifest.xml.
The file will have its original line endings in your working directory

Dos和Windows平台: 使用回车(CR)和换行(LF)两个字符来结束一行,即“\r\n”

Mac 和 Linux平台:使用换行(LF)一个字符来结束一行,即“\n”

解决方法:

在命令行输入以下命令,使 Git 提交时转换为LF,检出时转换为CRLF

$ git config --global core.autocrlf true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容