转载地址:http://www.ihref.com/read-16377.html
1.下载git
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