GIT---看我一步步入门(Windows Git Bash)

版权声明:本文为博主[原创]文章,未经博主允许可以转载,但需注明博客出处:[http://blog.csdn.net/FreeApe] https://blog.csdn.net/FreeApe/article/details/46845555

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 安装

    下载地址:http://msysgit.github.io/----git for windows VERSION 1.9.5

2 配置

  • GIT中文乱码
    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@xxx.com"
  • 设置完名字和email后,会在主目录里新建了一个全局的配置文件.gitconfig,如果不用全局设置,则在上一步中不用加--global参数,然后会在当前项目中的.git/config文件增加了以上的设置内容
$ cat .gitconfig
[user]
       name = FreeApe
       email = freeape@xxx.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文件,重新生成的话可以删除它们
      • $ ls -al ~/.ssh
    • 产生一个新的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
        • #复制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 常用操作

  • 获取Git仓库
可以通过从已有的仓库中克隆或者新建一个仓库。
    • 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 rm --cached <added_file_to_undo>
    • 注:在还没有提交之前,不小心将其他的内容添加进来了可以用此命令,没有提交,不存在HEAD版本,所有千万不能用$ git reset HEAD 命令,这样会删除你本地的内容,服务端又没保存,那你就不能恢复了,不过可以用恢复工具,但是这个不靠考。
  • 查看当前工作仓库的状态:$ 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
  • 设置branch 命令别名:$ git config --global alias.br branch
  • 查看所有提交的HEAD版本:$ git reflog
  • 恢复某个版本:$ git reset --hard 12abc3d

3.2 实例操作

  1. 在本机中新建GitTest 文件夹:
  2. 进入这个文件夹:
  3. 初始化GitTest 文件夹,生成了.git文件夹,即创建了本地仓库:
  4. 创建GitTest.txt 文本文件,并输入“GitTest!”字符串:
  1. 列出GitTest文件夹中所有文件和目录:
  2. 查看当前仓库状态:
  3. 将GitTest.txt文件添加进缓存区:
  1. 解决warning:CRLF will be replaced by LF in GitTest.txt:
  2. 查看当前仓库状态:
  3. 提交内容:
到上面几步,本地处理完了,接下来如果要把仓库push到服务器上还需要做一些工作,如在github.com上建立远端仓库,生成SSH Key,并添加到设置,最后才是push。
  1. 在github上登录并创建服务器端仓库:
  1. 当前仓库添加远端仓库:
  2. 检测是否添加成功:
  3. 更新远端版本到本机仓库:
  1. push本机仓库内容到服务器仓库:

4 后续学习和了解

  • branch/checkout
  • 其他命令的参数选项功能
  • 不同协议传输方式区别
  • markdown编程
  • ...

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试