标签:git github git bash ssh key windows
0 前言
不同的版本控制工具的比较这里就不介绍了,我的入门是从windows开始的,而且是使用纯命令方式(Git Bash),当然也可以结合TortoiseGit或者msysgit中的GIT Gui工具,这个工具可以通过界面方式来操作管理。
我们要管理项目,首先要建立一个GIT服务器系统,来管理项目版本。但是有的条件有限,我们搞不起服务器,只能借助第三方了,github就是很好的选择,它是一个网站,已经部署好了GIT系统,我们只需要注册个账号,然后就可以免费当我们的GIT服务器了,作为开发项目托管,msysgit是GIT版本控制系统在windows下的开源版本,在Linux系统下我们需要编译安装git。
开始学习之前,需要对一些概念要理解,比如仓库,分支啊啥的,不过不理解没关系,在实践的过程中我们慢慢就会懂了。不懂的概念要学会去找资料了解,遇到的问题不要放过,要解决。相信很快就可以入手了!
下面简单的说下github(remote)服务端和本地的关系,在本地可以独立建立仓库,并在本地管理,这就不需要接触到pull/push/fetch了,如果你想把项目托管到github,则需要pull/push/fetch了。像个人开发的项目就可以不必利用github来托管,即不用GIT服务器系统。
1 安装
2 配置
D:\Program Files (x86)\Git\etc中的git-completion.bash文件最后一行加上(重新打开bash才有效):
$ echo "alias ls=‘ls --show-control-chars
--color=auto‘" >> git-completion.bash
- 在GIT终端输入下面的命令可以提高GIT的输出格式
$ git config --global color.branch auto
$ git config --global color.diff auto
$ git config --global color.interactive auto
$ git config --global color.status auto
- 设置你的名字和email,这些是在提交commit时的签名
$ git config --global user.name "FreeApe"
$ git config --global user.email "FreeApe@aliyun.com"
- 设置完名字和email后,会在主目录里新建了一个全局的配置文件.gitconfig,如果不用全局设置,则在上一步中不用加--global参数,然后会在当前项目中的.git/config文件增加了以上的设置内容
$ cat .gitconfig
[user]
name = FreeApe
email = freeape@aliyun.com
- 当不用global时只是对当前项目进行设置,如warning: LF will be replaced by CRLF...出现是因为默认换行符为Linux系统下,为LF,而windows下的换行符是不一样的,为CRLF。出现这个警告,我们可以对项目进行设置(可以加--global):
$ git config core.autocrlf false
- SSH Key生成及github上添加SSH Key(一种不需要密码,用于受信的电脑,有点类似淘宝证书之类的)
- 检查电脑上是否已有SSH Key,有的话会列出所有.pub文件,重新生成的话可以删除它们
- 产生一个新的SSH Key
- $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- Generating public/private rsa key pair.
- Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
- Enter passphrase (empty for no passphrase): [Type a passphrase]不输入密码的话则为空密码
- Enter same passphrase again: [Type passphrase again]
- Your identification has been saved in /Users/you/.ssh/id_rsa.
- Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
- The key fingerprint is:
- 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
- 添加SSH Key到ssh-agent
- $ ssh-agent -s
- #启动ssh-agent 到后台
- Agent pid 59566
- $ ssh-add ~/.ssh/id_rsa
- Could not open a connection to your authentication agent.???
- 添加SSH Key 到你的账户
- $ clip < ~/.ssh/id_rsa.pub
- 然后将复制的内容黏贴到github.com上的账户中的Setting中的SSH Keys中。
- 测试连接
- $ ssh -T git@github.com
- The authenticity of host ‘github.com (207.97.227.239)‘ can‘t be established.
- # RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
- # Are you sure you want to continue connecting (yes/no)?选择yes
- Hi username! You‘ve successfully authenticated, but GitHub does not
- # provide shell access.如果username为你的账户名,则测试连接成功。
3 操作
一般操作都带有参数,可以通过添加-h参数选项来查看帮助。如$ git add -h 。而且一般的命令都跟Linux中操作相同,如rm删除文件,mkdir新建目录等。
3.1 常用操作
可以通过从已有的仓库中克隆或者新建一个仓库。
- clone一个仓库。克隆一个仓库可以用多种协议来实现,如https、ssh、git(具体区别可以去了解)等,不过我们都必须知道仓库地址(Git URL)
- $ git clone https://github.com/freeape/hello-world.git
- $ git clone git@github.com:freeape/hello-world.git
- $ git clone git://github.com/freeape/hello-world.git
- 新建一个仓库需要登录github.com或者$ git --bare init,而创建本地仓库$ git init(注:如果要push,肯定是要有个远程仓库的)
- 添加内容:$ git add [options] [--] <pathspec>...
- 查看当前工作仓库的状态:$ git status
- 提交添加的文件到缓存区:$ git commit
- 将提交的文件上传到服务器:$ git push
- 指定默认主机来push:$ git push -u origin master
- 如果远程主机的版本比本地新,强推:$ git push -f origin master
- 不管远程是否有没有这个分支,均推上去:$ git push --all origin master
- 从服务器上更新取回到本地:$ git pull = $ git fetch + $ git merge
- 添加远程仓库(SSH方式):$ git remote add origin git@github.com:UserName/Repository.git
- 查看当前远程仓库:$ git remote -v
- 查看操作日志:$ git log
- 删除文件跟踪并且删除文件系统中的文件file:$ git rm file
- 删除文件跟踪但不删除文件系统中的文件file: $ git rm --cached file
- 查看远程主机名为origin的信息:$ git remote show origin
- 添加远程主机:$ git remote add 主机名 网址,如$ git remote add origin git@github.com/UserName/Repository.git
- 删除本机连接的远程主机test(只是删除本机与服务端的仓库连接):$ git remote rm test
- 重命名远程主机名:$ git remote rename 原主机名 新主机名
- 查看远程分支:$ git branch -r
- 查看所有分支:$ git branch -a
- $ git branch -a
- * master
- remotes/origin/master
- 表示本地主机的当前分支为master,远程分支为origin/master
- 创建一个名为test的分支:$ git branch test
- 切换到test分支:$ git checkout test
- 在origin/master基础上创建newBranch分支:$ git checkout -b newBrach origin/master
- 合并分支:$ git merge newBranch
- 删除分支:$ git branch -d newBranch
- 显示当前工作版本和HEAD的区别:$ git diff HEAD
- 注:diff里面a表示前面那个变量,b表示第二个变量
- 将两个分支(branch1 branch2)的最新一次提交做比较:$ git diff branch1 branch2
- 比较上次提交和上上次提交:$ git diff HEAD^ HEAD
- 比较当前目录和分支test的差别:$ git diff test
- 查看尚未提交的目录更新了那些部分:$ git diff --stat 或者$ git status
3.2 实例操作
- 在本机中新建GitTest 文件夹:
- 进入这个文件夹:
- 初始化GitTest 文件夹,生成了.git文件夹,即创建了本地仓库:
- 创建GitTest.txt 文本文件,并输入“GitTest!”字符串:
- 列出GitTest文件夹中所有文件和目录:
- 查看当前仓库状态:
- 将GitTest.txt文件添加进缓存区:
- 解决warning:CRLF will be replaced by LF in GitTest.txt:
- 查看当前仓库状态:
- 提交内容:
到上面几步,本地处理完了,接下来如果要把仓库push到服务器上还需要做一些工作,如在github.com上建立远端仓库,生成SSH Key,并添加到设置,最后才是push。
- 当前仓库添加远端仓库:
- 检测是否添加成功:
- 更新远端版本到本机仓库:
4 后续学习和了解
- branch/checkout
- 其他命令的参数选项功能
- 不同协议传输方式区别
- markdown编程
- ...
版权声明:本文为博主"原创"文章,未经博主允许可以转载。
GIT---看我一步步入门(Windows Git Bash)
标签:git github git bash ssh key windows
原文地址:http://blog.csdn.net/freeape/article/details/46845555