Git

作者: 还好吗_5f30 | 来源:发表于2018-01-14 10:18 被阅读0次

Git Bash初始化设置

配置本机的用户名和Email地址

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

创建版本库(仓库)

版本库又叫仓库(repository),这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除都能被跟踪。

在合适的位置直接鼠标右键创建一个空目录作为仓库,然后从Git-Bash命令行进入到该目录,或者也可以使用命令行创建空目录,再进入到该空目录中。

以下给出创建并初始化git仓库的代码:进入到仓库的位置,我将仓库放在了D:/xampp/htdocs目录下,注意,使用cd命令进入到目录中时,在Git-Bash中应该使用斜线”/”,而不是反斜线”\”

$ cd D:/xampp/htdocs

使用init命令将当前目录初始化为Git仓库

$ git init

Initialized empty Git repository in D:/xampp/htdocs/.git/(显示信息意思为:初始化了一个空的Git仓库,htdocs目录下多了一个.git目录,时用来管理版本库的)

生成ssh公钥

$ ssh-keygen -t rsa -C "xxxxxx@qq.com"

# Generating public/private rsa key pair...

# 三次回车即可生成 ssh key

查看 public key,并把它添加到码云

cat ~/.ssh/id_rsa.pub

# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

设置远程库名

git remote add origin 远程地址

oschina中的README.md文件不在本地代码目录中

git pull --rebase origin master

将数据提交到git仓库(本地仓库)

第一步:添加文件

$ git add .        添加所有的文件、文件夹

$ git add 添加指定名称的文件,<>内部写文件全称

注:如果文件没有做出任何修改,则默认不会添加任何文件

第二步:提交文件

$ git commit –m “commit info”      

提交本次事务,即将add的文件提交到git仓库,引号内部表示本次提交的提示信息

第三步:查询提交状态

$ git status       

显示提交的状态:已经添加,等待提交事务的文件(绿色字体表示);已经改变但是没有添加(not staged)的文件(红色字体表示);

第四步:将本地分支的更新,推送到远程主机

$ git push <远程主机名> <本地分支名>:<远程分支名>

$ git push 远程地址 master

注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,例:git pull origin master,而git push是<本地分支>:<远程分支>,例:git push origin master。

取回远程主机某个分支的更新,再与本地的指定分支合并

$ git pull <远程主机名> <远程分支名>:<本地分支名>

查询该文件和git仓库中的文件的区别,即做了什么修改

$ git diff <文件全称>     

如果已经add了,就打印不出有什么修改了,这一步骤应该在add之前,即添加之前可以用来看看做了什么修改。

打印历史记录

$ git log

Commit commit id 版本号

Author:xxx提交人和邮箱

Date:提交的时间

commit提交的信息(所以说,提交信息很重要!!!)

$ cat <文件全名称>      显示整个文件的内容

版本回退

$ git reset --hard head^

在Git中,HEAD表示当前版本,就是最新提交的版本,即使用git log打印出来的位于第一位的版本,上一个版本就是HEAD^,上上个版本就是HEAD^^,当前向上100个可以写成HEAD~100。当然,还有一种方式就是直接使用commit id来代替HEAD^,比如版本号是cadab353589f3eef075817b890dafe8b722d802b,

那么就可以直接使用命令:

$ git reset --hard cadab353589f            使用前几位表示即可,git会自动查找

注:版本回退以后,使用git log打印的历史记录都是回退版本之前的数据,之后的都没有了,不过放心,git总有后悔药可以吃哒~

1.如果命令行窗口没有关闭,直接去前面找commit id即可;

2.如果命令行窗口关闭了,或者第二天后悔了,可以进入到该目录下,使用git reflog命令来查看以前的每一次命令,可以获得每次提交的commit id,就可以版本回退了。

$ git reflog                          可以查看命令历史,包含提交的commit id

使用克隆命令将远程仓库的代码复制一份到本地,注意此处应该用https访问

$ git clone https://***.***.***.***/android/salestool.git

输入用户名和密码之后,将开始下载远程仓库,这里仅仅下的是主分支-master

查看仓库的分支情况

$ git branch –a

显示如下:

* master

  remotes/origin/HEAD -> origin/master      HEAD-远程仓库的当前分支是主分支

  remotes/origin/dev                                    dev分支(所有操作都会合并到该分支)

  remotes/origin/master                               master分支-主分支

创建本地仓库的dev分支

$ git checkout -b dev

将远程仓库的dev分支代码复制到本地dev分支

$ git pull origin dev


切换到本地dev分支,并将远程仓库的dev分支的最新代码拉下来

$ git checkout dev

$ git pull origin dev

(此时,本地仓库的dev分支已经确保是最新的了)

切换到自己的分支my,将dev分支合并到自己的分支上

$ git checkout my

$ git merge dev        将本地dev分支合并到自己的my分支上

注意:此时已经将dev分支合并到本地的自己的分支上了,有时候可能需要解决代码冲突问题,解决完毕后进行下面的操作。

如果有冲突,则需要再次进行add,commit操作。

推送到远程服务器

$ git push origin dev

忽略文件

有一些文件并不能上传到git上。

1.Android Studio自动生成配置文件:不能上传到git上,否则的话,如果你的同事下载下来,但是它的studio(gradle)版本和你的不一样,或者其他配置的各种路径不一样,就需要重建项目,严重的话,根本无法重建项目,一片爆红!网上的方法也解决不了。

2.保存了数据库密码或者什么不能上传的文件。

所以需要在项目的根目录下创建一个名称为.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。

忽略文件的原则是:

1.忽略操作系统自动生成的文件,比如缩略图等;

2.忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;

3.忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

$ cat.gitignore

   *.[oa]

   *~

第一行告诉 Git 忽略所有以.o或.a结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略log,tmp或者pid目录,以及自动生成的文档等等。要养成一开始就设置好.gitignore文件的习惯,以免将来误提交这类无用的文件。

文件.gitignore的格式规范如下:

所有空行或者以注释符号#开头的行都会被 Git 忽略。

可以使用标准的 glob 模式匹配。

匹配模式最后跟反斜杠(/)说明要忽略的是目录。

要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有 0 到 9 的数字)。

我们再看一个.gitignore文件的例子:

# 此为注释 – 将被 Git 忽略

   # 忽略所有 .a 结尾的文件

   *.a

   # 但 lib.a 除外

   !lib.a

   # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

   /TODO

   # 忽略 build/ 目录下的所有文件

   build/

   # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

   doc/*.txt

Git Gui简单使用

注意:个人建议使用命令行方式进行版本管理,但是可以使用图形化界面看本次代码的改动,比较方便。

1.  在所在项目,右键选择git gui

2. 界面如下,如果会使用命令行,那么一看就明白了

3. 配置

UTF-8:Edit-Options:

如果之前设置好了,直接在项目中右键进入,那么这些都不用设置:

4. Add commit push很快完成,不用输i入命令

5. 查看代码对比

如果想要查看所有的改动历史,可以:

就可以看到所有的代码改动历史,而不用去网上看。注意,这里能看到所有人的改动哦!!!非常强大!

6. 设置和远程仓库关联(如果从项目根目录进入,则自动关联,不用设置)

如果需要设置,选择remote-Add,参考如下:

7. 新建项目,从远程仓库克隆

右键选择git gui:

选择克隆已有版本库:

相关文章

网友评论

      本文标题:Git

      本文链接:https://www.haomeiwen.com/subject/yikljxtx.html