Git/GitHub 的使用 VSgit插件

------------------------------------------------20170712补充-------------------------------------------------------------------------

关于 merge 参数 no-ff 

merge 的时候  有几种不同方式 ,如Fast-forward (快进合并) 、'recursive' strategy(递归合并)  当合并的时候会自动选择,首选Fast-forward,

但是 ,当 merge的目标分支(develop)在你创建新分支(temp)后又有新的提交时候(此时develop分支已改变,不能简单通过Fast-forward即改变指针指向来快进合并),

Fast-forward会被拒绝,此时会发生一次真正的merge用来防止别人的提交被你覆盖。

当发生Fast-forward合并时,如果不加no-ff参数  提交后在log 或图形界面中是看不到本地分支(temp)分支的操作纪录的,只是在develop分支延长出了几次提交,

无法区分是直接在develop上做的修改还是新建temp分支做的修改,找不到merge的那次commit点和merge说明

(Fast-forward其实根本没有merge ,只是把head指针向前移动了),

但是 加了no-ff参数就不同了,ff 即Fast-forward,强制不用Fast-forward方式,在图形上或log上可以看到本地分支的线,每次提交的点,merge的点和merge信息。

VS中的git插件  是默认不适用 no-ff  参数的,即可以使用Fast-forward方式,并且好像无法修改这个配置,指定merge参数,所以 ,为了方便追溯,在merge这一步,尽量

使用命令行的方式  加上no-ff参数 。


参考文章:http://blog.csdn.net/fangchao3652/article/details/53540874


-------------------------------------------------------------------------------------------------------------------------------------------

   

1、git环境配置:设置用户名: git config --global user.name <your_name>

                            设置邮箱 :git config --global user.email <your_email@…>

                            如果需要同步到【远程库】(如github、gitlab)  还需要本地和远程绑定(SSH Key):

                                    1、使用Git 生成新的ssh key。

                                          $ cd ~  #保证当前路径在”~”下

                                          $ ssh-keygen -t rsa -C "xxxxxx@yy.com"  #建议填写自己真实有效的邮箱地址

                                          Generating public/private rsa key pair.

                                          Enter file in which to save the key (/c/Users/xxxx_000/.ssh/id_rsa):   #不填直接回车

  Enter passphrase (empty for no passphrase):   #输入密码(可以为空)

  Enter same passphrase again:   #再次确认密码(可以为空)

  Your identification has been saved in /c/Users/xxxx_000/.ssh/id_rsa.   #生成的密钥

  Your public key has been saved in /c/Users/xxxx_000/.ssh/id_rsa.pub.  #生成的公钥

  The key fingerprint is:

  e3:51:33:xx:xx:xx:xx:xxx:61:28:83:e2:81 xxxxxx@yy.com


  *本机已完成ssh key设置,其存放路径为:c:/Users/xxxx_000/.ssh/下。

  注释:可生成ssh key自定义名称的密钥,默认id_rsa。

  $ ssh-keygen -t rsa -C "邮箱地址" -f ~/.ssh/githug_blog_keys #生成ssh key的名称为githug_blog_keys,慎用容易出现其它异常。


 添加ssh key到GItHub

  1、登录GitHub系统;点击右上角账号头像的“▼”→Settings→SSH kyes→Add SSH key。


 2、 复制id_rsa.pub的公钥内容。 

 1) 进入c:/Users/xxxx_000/.ssh/目录下,打开id_rsa.pub文件,全选复制公钥内容。

  2) Title自定义,将公钥粘贴到GitHub中Add an SSH key的key输入框,最后“Add Key”。


测试ssh keys是否设置成功。

git bush 命令行 : $ ssh -T git@github.com

The authenticity of host 'github.com (192.30.252.129)' can't be established.

RSA key fingerprint is 16:27:xx:xx:xx:xx:xx:4d:eb:df:a6:48.

Are you sure you want to continue connecting (yes/no)? yes #确认你是否继续联系,输入yes

Warning: Permanently added 'github.com,192.30.252.129' (RSA) to the list of known hosts.

Enter passphrase for key '/c/Users/xxxx_000/.ssh/id_rsa':  #生成ssh kye是密码为空则无此项,若设置有密码则有此项且,输入生成ssh key时设置的密码即可。

Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. #出现词句话,说明设置成功。


配置.gitignore 文件(忽略特定文件): 

   1、配置语法:

  以斜杠“/”开头表示目录;

  以星号“*”通配多个字符;

  以问号“?”通配单个字符

  以方括号“[]”包含单个字符的匹配列表;

  以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

  此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

2、示例:

  (1)规则:bin/
      说明:忽略目录 bin下的全部内容;注意,不管是根目录下的 /bin/ 目录,还是某个子目录 /child/bin/ 目录,都会被忽略;[包括bin文件夹]

如果是bin/*  则bin里面文件夹中的文件 不会被忽略

  (2)规则:/bin/
      说明:忽略根目录下的 /bin/ 目录的全部内容;[包括bin文件夹]

  (3)规则:

/*
!.gitignore
!/fw/bin/
!/fw/sf/

说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;


Git中三种文件状态及其转换

Git在未进行commit操作之前,存在三种状态:Untracked files(未跟踪),Changes not staged for commit(未保存到暂存区,不会被提交)及Changes to be committed(保存到暂存区 可以被提交),每种状态之间可以随意进行互相转换。
git add  test.txt 未跟踪添加到跟踪 、未存到暂存区添加到暂存区
git rm --cached test.txt 恢复到未跟踪状态
git checkout -- test.txt  已修改 还原到未修改状态

VIM编辑器:  vim  test.txt  用vim编辑器打开文件
vim相关命令:
按ESC键 跳到命令模式,然后:

:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑

2、常用命令:

git clone  项目地址 (要提前设置好ssh key)

git init 初始化仓库

 git status  查看状态  会显示已追踪和未追踪文件

$ git remote add origin git@github.com:xxxxxxx.git     把远程仓库项目映射到本地项目

$ git push -u origin master     本地提交推送到远程仓库

  git add   【文件名或文件夹名(文件夹名后有/)】 添加文件到追踪   (git add .  添加全部)

git commit -m "描述内容"  提交到本地库   

git commit -a是把unstaged的文件变成staged(这里不包括新建(untracked)的文件),然后commit。(在修改文件后,需要使用git add把文件加入暂存区,这样git commit时才能把已经修改的信息加入版本库,而使用git commit -a可以不用再git add。)

如果全部提交 :git commit -am "描述信息" 

如果修改的文件只提交一部分,用 git add -test.txt      git commit -m "提交信息"

git push  提交到git hub

git  pull  从github上获取

git checkout -b test  本地新建一个test分支并切换到它

git  branch -d test   删除本地test分支 

git  merge test  (当前是master分支)  把test分支的改动merge到master 分支上

 git push origin test   把本地分支推送到远程

git push origin --delete test 删除远程的test分支 


3、vs上使用github:

1)、使用Visual Studio自带git 插件,开启:工具--》选项–》源代码管理–》Microsoft git 提供程序

   此处注意:如果选择后提示当前项目要重新打开 ,打开后还是自动又使用了SVN管理工具,这是由于当前项目.sln 文件有个配置引起的 ,修改 Svn-Managed = Flase 即可。

2)、初次使用git: 团队资源管理器--》项目–》连接到团队项目 , 里面有  新建  添加  克隆 选择对应情况即可。

3)、添加完对应项目后,解决方案管理器中 每个文件前面应该就已经有相应的图标了   

4)、更改  

5)、分支

6)、未同步提交

7)、git设置

-----------------------------------------------------------------------------------------------------

安装插件 GitHub.VisualStudio.vsix

推出本地提交的时候如果其他人已经修改了 会提示。此时使用

1、git stash  --暂存当前的未保存工作,还原到上次提交到本地库的状态

2、git pull  --拉取远程版本  并自动合并 如果有合并不了的需要手动合并

3、然后再推出本地版本

4、git stash pop 还原本地未保存的修改  继续工作

参考资料  :https://git-scm.com/book/zh/v2/

                     http://marklodato.github.io/visual-git-guide/index-zh-cn.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值