Git持续总结

阶段一:安装Git、创建代码仓库、提交本地代码

安装:

Ubuntu:sudo apt-get install git-core

Windows:http://msysgit.github.io/  下载安装下一步即可

创建代码仓库:

1.配置身份信息——Git就知道是谁提交的了

  $ git config --global user.name "JLiang"

  $ git config --global user.email "j990499599@gmail.com"

  $ git config --global core.autocrlf false  ————Windows和Linux的换行符号不同

  出现警告warning: LF will be replaced by CRLF————Linux换行符号为LF,Windows换行符为CRLF

2.获取身份信息——不指定即可

  $ git config --global user.name

  $ git config --global user.email

3.给具体项目创建代码仓库

  $ cd /e/learnAndroid/DatabaseTest/    ——进入项目目录

  $ git init                ——创建代码仓库

  

  创建成功之后,会多一个.git的隐藏文件夹,通过ls-al命令可以查看

  $ ls -al

  

提交本地代码

  $ git add .             ——将DatabaseTest目录所有文件都添加进去

  $ git commit -m "First commit"  ——提交并通过-m参数添加描述信息,且-m必须有

 

阶段二:忽略文件、查看修改内容、撤销未提交的修改、查看提交记录

忽略文件——.gitignore

并不是所有文件都需加入到版本控制当中!!

如bin目录和gen目录下的文件是自动生成的,这两个目录就不应该加入到版本控制当中,否则可能会对文件的自动生成造成影响!

具体做法:

  1.在项目根目录下创建文件.gitignore  ————  vim .gitignore

  2.逐行写入不需要提交的文件路径  ——  注意vim编辑器的使用,按insert键就可以编辑了,按esc表示退出编辑,键入冒号":"再输入wq表示保存并退出

过滤掉需要忽略的文件之后,常规提交代码即可

补充一个删除命令:rm -rf <filename>  --  慎用

补充一个查看内存命令:df

查看修改内容——git status  git diff <src>

  $ git status      ——可以查看到哪些文件被修改了

  $ git diff         ——可以看到具体修改的地方

  $ git diff <文件路径>  ——查看具体某个文件修改的地方

  

  

  $ git diff res/layout/activity_main.xml  。。。

  

撤销未提交的修改:checkout

方式一:  

  $ git checkout src/com/example/providertest/MainActivity.java 

  刚刚修改的价格就被还原了!

  局限性在于:只适用于没有执行过 git add <...> 命令的文件 ,如果已经执行过add命令,该方式失效——通过git status 可以看到仍处于添加状态

方式二:

  思路是,先撤销添加,在执行撤销操作

  $ git reset HEAD src/com/example/proviertest/MainActivity.java

  $ git checkout src/com/example/providertest/MainActivity.java 

令人困惑的是:checkout 检出  —— 切糕还原大法?后续脑补

 

查看提交记录:log

在提交多次之后,想要查看每次提交所修改的内容,可以用log

  $ git log           ——会显示所有提交的概述

  $ git log <id> -1       ——只显示指定commit id的概述

  $ git log <id> -1 -p     ——显示指定id具体改动的内容

  

  

  

 阶段三:分支

 每发布一个版本时就创建一个分支,这样各个版本之间的影响不大

 

查看分支:

$ git branch -a

  

发现只有一个master,签名有个*号   ===》  目前没有分支,只有主干线master,*表示目前所在的分支

创建分支:

$ git branch version1.0

  

可以看到,成功创建了version1.0这个分支

如果在version1.0这个分支上进行修改,提交代码,是不会影响到master的!!

切换分支:

$ git checkout version1.0

  

 

可以看到,分支由master切换到了version1.0上

删除分支:

$ git branch -D version1.0

  

 

  

可以看到,删除非当前"支"是可以正常执行的

 

Git团队合作:

基本流程:

  首先得有一个远程的版本库

  各个成员从这个版本库中获取原始代码——clone 

  $ git clone https://github.com/callerge/coolweather.git

  

  某成员完成了相应模块功能后,将代码同步到远程版本库——push —— git push origin master:将本地代码同步到服务器master分支上,会提示需要登录GitHub账号密码

  当然是需要先将代码提交到本地

  $ git push origin master

  

  可以将远程版本库的修改改同步到本地——fetch或pull

      git fetch 服务器地址 master ——将远程代码同步到本地,但不会合并,而是存放在分支:服务器地址/master 上,通过diff命名可以查看修改内容,通过git merge 服务器地址/master可以合并

      git pull 服务器地址 master —— 等于fetch+merge,获取最新代码并且合并在本地

 

怎么生成公钥

有了公钥之后,将公钥提供给第三方库的管理员,添加进去之后呢,就可以clone或者上传东西到别人的库了

user01@client:$ ssh-keygen –t rsa

此举会在/home/user01/.ssh/下生成私钥 id_rsa 和公钥 id_rsa.pub 文件。

 

怎么关联远程分支

先移除再关联即可

user02@client:~/ 666$ git remote remove origin

user02@client:~/ 666$ git remote add origin git@192.168.10.147: 666.git

怎么创建分支并push到远程

git checkout -b test_new_branch
git push --set-upstream origin test_new_branch

 

github取消密码提交方式了,采用SSH

1.生成服务器的rsa公钥

a.Ubuntu上 ssh-keygen -t rsa 即可

b.win上同样的方式,git clone的时候会提示异常 

 

 按照如下方式重新生成:

# 生成新秘钥,如果报错 unknown key type ed25519,使用这个:ssh-keygen -t ecdsa -b 521 -C "your_email@example.com",一路回车(第一个回车是生成秘钥的名字,不给就默认,后两个是密码,可以不要)
$ ssh-keygen -t ed25519

# 启动 ssh 代理,根据环境,使用不同的命令
$ eval "$(ssh-agent -s)"

# 将秘钥添加到代理中,如果还有其他以前秘钥,也要添加进去
$ ssh-add id_ed25519

 

2.在github个人账号里面,添加ssh公钥即可

 

posted @ 2015-10-28 11:08  洱海  阅读(303)  评论(0编辑  收藏  举报
.First { margin: 10px 0; font-family: 'Microsoft Yahei'; text-align: left; padding: 6px 20px; color: #fff; background: #55895B; font-size: 20px; border-radius: 4px; clear: both; } .Second { margin: 10px 0; font-family: 'Microsoft Yahei'; padding: 6px 20px; background: #93C8A2; color: white; font-size: 18px; border-radius: 4px; clear: both; } .Third { margin: 10px 0; padding: 6px 20px; font-family: 'Microsoft Yahei'; margin: 15px 0; font-size: 16px; color: black; background: #C6EFD2; border-radius: 4px; clear: both; } .note { margin: 10px 0; padding: 15px 20px 15px 60px; background: #FCFAA9 url('http://images.cnblogs.com/cnblogs_com/libaoheng/305804/o_yellow-pin.png') no-repeat 20px 0; font-size: 15px; font-family: 'Microsoft Yahei'; box-shadow: 0 0 8px #aaa; clear: both; } .demo { text-align: left; padding: 6px 20px; overflow: auto; border-radius: 4px; background: orange; color: #fff; font-size: 16px; clear: both; } .cnblogs_Highlighter { border: solid 1px #ccc; clear: both; } .cnblogs_code { background: #EFFFF4; border: solid 0px #939393; font-size: 14px; clear: both; padding: 10px 20px; } .cnblogs_code pre { font-size: 14px; } .cnblogs_code span { font-family: Courier New; font-size: 14px; }