命令行模式
配置身份
配置身份后,在提交代码的时候,Git就可以知道是谁提交的了
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
创建代码仓库
仓库(repository)是用于保存版本管理所需信息的地方,所有本地提交的代码都会被提交到代码仓库中,如果有需要还可以推送到远程仓库中
创建代码仓库命令:
git init
仓库创建完成后,会在该目录下生成一个隐藏的.git目录,这个目录就是用来记录本地所有的Git操作的,可以通过命令查看一下
ls -al
如果想要删除本地仓库,只需要删除这个目录就行了
提交本地代码
提交代码使用 add 和 commit 命令,add用于把想要提交的代码添加进来,commit则是真正执行提交操作
添加某个文件
git add 文件名
如果文件名包含空格,需要用引号引起来,如果只是存在中文,不需要使用引号
添加某个目录
git add 目录名
添加当前目录
git add .
提交代码
git commit -m "First commit."
在 commit 命令的后面,一定要通过-m参数加上提交的描述信息
撤销动作
撤销未添加的修改
这种撤销方式只适用于那些还没有执行过add命令的文件,如果某个文件已经被添加过了,这种方式就无法撤销更改的内容
git checkout 文件名
撤销已添加的修改
这种撤销方式只适用于那些执行过add命令,但还没有执行过commit的文件
git reset 文件名
撤销已提交的修改
这种撤销方式适用于那些执行过commit的文件,表示将当前工作区切换到上个 commit 版本
git restore -s HEAD~1 文件名
查看文件修改情况
查看有哪些文件修改了
git status
查看某个文件具体修改了什么
git diff 文件名
不加文件名,可以查看所有文件的更改内容
查看提交记录
git log
如果我们只想查看某一个及之前的记录,可以在命令中指定该记录的id
git log ff66e7c73fb61d997980cf99e811287bb2f922fc
也可以在命令中通过参数指定查看最近的几次提交,比如 -1就表示我们只想看到最后一次的提交记录
git log -1
忽略文件
Git 允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的目录下是否存在一个名为.gitignore的文件,如果存在,就去一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。.gitignore中指定的文件或目录是可以使用“*”通配符的
在 .gitignore 文件中配置 test_ignore_file.txt 文件
执行添加命令,再查看状态,会发现将 test_ignore_file.txt 文件排除在版本控制之外了
分支
分支主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响
假如研发了一款软件,推出了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
创建一个分支
git branch 分支名
master分支的前面有一个“*”号,说明目前我们的代码还是在master分支上的
切换分支
git checkout 分支名
需要注意的是,在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 工具模式
配置身份
但是我点击 “Add Account...” 的时候,它打开一个网页,android studio 就一直是下面的页面
因此我采用 “Log in with Token” 的方法,如下:
点击生成 Token,需要登录 GitHub 账号,然后点击 Add Account 按钮完成身份配置
创建代码仓库
在弹出的文件选择器中,选择项目的根目录
添加文件
要添加哪个目录,就在哪个目录上右键
提交文件
弹出以下弹窗
输入的 Name,当提交之后,会在 Git 页面显示
Push 到远程仓库
输入远程地址
输入仓库地址后,出现以下错误
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"
提交到远程仓库
问题
问题一
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