本文在第一部分记录了如何在本地创建git仓库,以及git的几个常用命令。第二部分记录本地仓库与远程仓库如何关联,以实现这两个仓库的远程同步。这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。第三部分是github对忽略文件的配置文件。
一、创建本地仓库
1.创建代码仓库
打开Git Bash ,进入到项目根目录下面,命令为 cd /d/XXX,或者(cd d:)一级一级进入项目根目录。
然后,输入命令git init创建本地代码仓库。
2.忽略文件.gitignore
.gitignore文件允许用户将指定的文件或目录排除在版本控制之外。Git会检查代码仓库的目录下是否存在该文件,如果存在,则一行一行读取文件的内容,并把每一行指定的文件或目录排除在版本控制之外。
3.提交代码到本地仓库
命令:git add . 该命令将所有文件(除.gitignore文件中指定的文件或目录)提交到索引库中。
命令:git commit -m "提交注释" 该命令将索引库中的文件提交到本地仓库。
4.查看修改内容
代码提交后,可以查看距上次代码提交后又修改的情况。命令:git status
modified 指的就是距上次代码提交后,又修改的文件。Git提示代码已修改但还尚未提交。
查看具体更改的内容,命令git diff
“-”代表删除的部分,“+”代表增加的部分,上述代码的意思是,将price的值由“22”更改为了“22.23”。
如果,想要查看具体某个文件的更改内容,可以使用如下命令:
git diff app/src/main/java/com/company/xingnana/providertest/MainActivity.java
其实,git diff 后面跟着的就是查出来的修改的文件
5.撤销代码修改
如果代码尚未提交,即还未执git add命令,则可以对已经修改的代码进行撤销。如,撤销上面price的修改代码
命令:git checkout app/src/main/java/com/company/xingnana/providertest/MainActivity.java
nothing to commit 说明撤销成功!
如果代码已经添加到索引库,即执行了git add命令,那么需要先撤销添加,然后再撤销修改。
第一步,撤销添加,git reset HEAD app/src/main/java/com/company/xingnana/providertest/MainActivity.java
第二步,撤销修改,git checkout app/src/main/java/com/company/xingnana/providertest/MainActivity.java
通过命令git status 可以看到nothing to commit ,文件变成了未修改前的状态,表明修改撤销成功!
6.查看历史提交记录
如果提交次数过多,可以通过git 查看以往历次提交记录。提交记录包括:提交Id(commit id),提交人,提价日期,提交描述。
修改部分代码,将price的值由“22”更改为了“22.23”。然后提交,通过git log 查看提交记录,最近的修改靠前显示。
当提交记录比较多时,只需要有提交id,还可以查看某次的提交记录.
命令:git log 8c275765997ef65ef1127e35eeb4a2e37190976e -1 (-1代表只看一行记录)
如果想查看提交记录具体修改了什么内容,可以增加参数-p
git log 8c275765997ef65ef1127e35eeb4a2e37190976e -1 -p
同样地,“-”代表删除的部分,“+”代表增加的部分,上述代码的意思是,将price的值由“22”更改为了“22.23”。
二、本地仓库与远程仓库关联
(1)本地已经有git仓库
上述已经在本地创建了一个Git仓库,现在又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。
1.在GitHub先创建一个repository
2.将新创建的远程仓库与本地仓库关联
刚创建的仓库是空的,通过如下命令,将已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
$ git remote add origin git@github.com:X-NaN/RedmineCrawler.git
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
3.将本地仓库内容推送到远程仓库
#第一次推送,增加 -u 参数,Git会把本地的master分支内容推送到远程新的master分支,而且还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push -u origin master
#简化的命令
$ git push origin master
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
在推送时可能会遇到下面的问题,这是因为需要把Gitbub添加到hosts。
解决方法:C:\Windows\System32\drivers\etc\hosts 文件中添加一行:13.250.177.223 github.com
以上介绍的都是先创建本地仓库,然后创建远程仓库,再把本地仓库关联到远程仓库。
其实,比较好的方式是先创建远程仓库,再把远程仓库clone到本地。这样比较简单
$ git clone git@github.com:X-NaN/RedmineCrawler.git
(2)本地没有git仓库
第一步:现在github创建远程仓库;
第二步:git clone到本地;
第三不:在本地仓库目录中创建工程;
注:这种方式就可以避免设置ssh key
三、Git忽略文件:.gitignore
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的
.class
文件; - 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
github已经有大部分需要忽略文件的配置文件:github/gitignore