Git

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:

选择克隆已有版本库:

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

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,378评论 9 163
  • 什么是锁 锁机制是并发控制的需要,分为共享锁和排他锁(也叫读锁和写锁)。 读锁是相互不阻塞的,即多个客户在同一时刻...
    苏近之2017阅读 174评论 0 0
  • 情绪低落、皮肤干燥、浑身没劲、秋季脱发……入秋后,很多人被这些不适困扰。除了气候的原因,缺乏某些营养素也可能让...
    雨之春阅读 332评论 0 0
  • 最近连续剧《欢乐颂》大火,或许与你我的职场生活相近,仿佛每个人都可以在这部电视剧里找到自己的影子,因此引发共鸣。追...
    艾米要奋进阅读 8,307评论 22 151
  • “习得性无助”与“自我厌恶”,这两个都是长期形成的思维方式啊,得要慢慢掉正调整。其间还要收集各种解决这两个问题的方...
    Y混沌阅读 195评论 0 2