Git版本控制

转载地址:http://www.ihref.com/read-16377.html

1.下载git

官网:http://git-scm.com/

 

1.1.一路默认安装就好,安装好了之后,任意目录右键能看到一个Git GUI here 和Git Bash here

1.2.打开git bash,这是git的终端,输命令行的地方。

1.3.输入 git 看一下是否安装成功

2.获取ssh秘钥

SSH是一种网络协议,用于计算机之间的加密登录,而大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,所以想要在 GitHub 提交代码的第一步就是要先添加 SSH key 配置,其中git bash自带SSH。

2.1.输入: ssh-keygen -t rsa -C "GitHub邮箱登录账号"

接下来会叫你输入文件保存位置,默认位置是(/c/Users/Administrator/.ssh/id_rsa)  直接默认就好

再接下来会叫你设置密码,后面会确认密码,这里可以不输入,密码登录会很麻烦。

2.2.上述操作如果成功会在你的计算机里生成.ssh文件夹,里面有id_rsa文件和id_rsa.pub文件

       用记事本打开id_rsa.pub文件,复制里面的全部内容

2.3.打开GitHub网站,在settings里的SSH and GPG keys中点击新建秘钥(New SSH key),把刚刚复制的内容粘贴进去就好了,title部分不用管。

2.4.验证是否成功—在git bash中输入: ssh -T git@github.com

会等一两分钟,之后会叫你输入yes/no,输yes,后面显示successfully则表示成功

2.5在桌面上的git bash右键属性,去掉--cd-to-home,修改“起始位置”为自定义的git 本地仓库的路径,这样以后创建

新仓库就不用再cd了。

2.6.输入: git remote -v 看一下是否是HTTP格式的

$ git remote -v
origin  https://github.com/****************.git (fetch)
origin  https://github.com/****************.git (push)

输入git remote set-url origin+<仓库克隆地址>    把它设置成SSH格式的

$ git remote set-url origin git@github.com:****************.git

可以再输入 git remote -v  看看是否改过来了

$ git remote -v
origin  git@github.com:**************** (fetch)
origin  git@github.com:**************** (push)

接着使用clone with SSH格式可以解决很多问题。。

如果出现:fatal: remote origin already exists.错误

直接输入: git remote rm origin  移除再添加新的就好了。

3.基本使用(一些简单的命令)

首先,工作区是指你电脑上能看见的那个目录就称为工作区,工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

在当前cd路径创建一个新的仓库,这样创建的仓库是作为共享库的

$ git init --bare 仓库名  

如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入:

$ git init

该命令将创建一个名为 .git 的子目录,默认是隐藏的。

先clone库到本地一个文件夹执行git管理

先在没有.git文件的目录创建一个文件夹并bash中cd到这里 其中 cd .. 表示回到当前目录的上一级,cd . 表示当前目录

$ git clone <仓库地址或目录>   //顾名思义,下载仓库到本地,称为工作区

如:git clone E:/Git/reponsitory_win/Git_project/myfirst_git_resp/ .      //克隆本地的共享库,后面那个点代表当前目录的所有文件。

$ git clone git: <GitHub中一个项目的网址> <新名字(可选)>    //从网上克隆一个库

注意:这里克隆的来源,我们把它们都称为共享库

然后先把开发者的信息补充上去,或者在你克隆之前就会提示你写信息,信息用于后期查看谁做了什么些更改

$ git config --global user.name "<姓名>"

$ git config --global user.email "<邮箱>"

在工作区创建一个新文件,比如readme.txt,之后需要

$ git add readme.txt  //纳入暂存

把所有变化量提交到暂存区

$ git add . 

在readme.txt添加内容,比如user creat file

$ git add readme.txt  //纳入暂存

也就是说你做了什么 更改之后都需要git add纳入暂存,不然git不会记录

$ vim <文件名>    //编辑修改的说明信息,用于标记做了什么更改,不要在#后面编辑 那是提示信息

        i 进入编辑模式

        按Esc键退出编辑模式

         :w 保存

        : q 退出

或者,下面的语句,这样就不用进vim添加修改说明

$ git commit -m "<修改说明>" <文件名> 

$ git commit -m "my first commit" readme.txt

用git commit -m也不用在添加修改说明后git add 暂存,-m表示提交到本地

或者

$ git commit -a -m "<修改说明>"

-a表示一起操作,不用单个add了,上面的git commit表示提交到本地的版本库

更新给共享库,当共享库为空时要加上 -u

$ git push origin master
$ git push -u origin master

当别的开发者有更新到共享库,可以用git pull来更新你的本地库

$ git pull

查看文件夹里文件的状态,只显示修改了未暂存或者未commit到本地库的文件,比如新创建了一个文件、修改了一个文件的内容等等:

$ git status

比较工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容:

$ git diff

查看已经暂存起来的文件和上次提交时的快照之间的差异,会显示修改说明,但不会显示具体的修改内容使用

git diff --cached 或者git diff --staged

$ git diff --cached

查看提交到版本库的历史

$ git log

还可以更详细一点,用:

$ git log -p -2

 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新,该选项除了显示基本信息之外,还在附带了每次 commit 的变化,包括具体的修改内容

仅简要显示每次提交的修改了多少行:

$ git log --stat

移除已经暂存的某个文件,并把它撤销处工作区,这样以后就不会出现在为跟踪文件的清单中了,用git rm

$ rm     #移除某个文件,但commit时不会把删除操作传递上去,需要加 -a
$ git rm     #删除文件并记录下这个删除操作,早commit时一起提交。

移除一个文件不纳入版本控制详细操作步骤

 git rm --cached  文件路径

git commit --amend -CHEAD  //不明白什么作用,但好像挺重要的一步。

把上一次提交的操作撤回,并进行改变,即回到上次提交前的状态,会首先进入vim填写修改说明的界面:

$ git commit --amend

有时候一些文件我们想要忽略不纳入提交和管理,或者编译生成的一些文件不需要提交的,可以创建一个 .gitignore文件,然后在这个文件里进行编辑需要忽略的文件格式,具体做法如下:

在项目所在文件夹,右键git bash here,输入:

$ touch .gitignore

创建一个  .gitignore文件,然后在里面进行编辑,编辑格式如下:

忽略文件原则

  • 忽略操作系统自动生成的文件,比如缩略图等;
  • 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  • 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

语法规范(熟悉正则很容易理解)

  • 空行或是以#开头的行即注释行将被忽略;
  • 以斜杠 “/” 结尾表示目录;
  • 以星号 “*” 通配多个字符;
  • 以问号 “?” 通配单个字符
  • 以方括号 “[]” 包含单个字符的匹配列表;
  • 以叹号 “!” 表示不忽略(跟踪)匹配到的文件或目录;
  • 可以在前面添加斜杠 “/” 来避免递归,下面的例子中可以很明白的看出来与下一条的区别。

配置文件示例

# 忽略 .a 文件
*.a

# 但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a

# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO

# 忽略 build/ 文件夹下的所有文件
build/

# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt

# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf

把一个新的项目上传到网络上的仓库的步骤:

git init     //创建本地git管理

git add .   //暂存

git commit –m “first commit”   //提交到版本库

git remote add origin https://github.com/hduchenyongsen/TaichiG.git  //建立连接

git push -u origin master  //上传  -u  在网上仓库为空时才使用

4.可能会出现的错误

1.warning: LF will be replaced by CRLF in ......

原因是路径中存在 / 的符号转义问题,解决办法:

git config --global core.autocrlf false

false就是不转换符号默认是true,相当于把路径的 / 符号进行转义

 

2.当推送到共享库时停在writing objects时可以输入一下指令试试

git config --global http.postBuffer 524288000

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值