这是 猴子都懂的Git入门 的学习笔记
Git安装与配置
下载安装Git:http://git-scm.com/
从开始菜单启动Git Bash
$ git --version
git version 2.12.2.windows.2 # 说明Git安装成功
# 下面是一些设置,这些设置都保存在C:UsersAdministrator.gitconfig下面,如果找不到,就用everything搜索
git config --global user.name "sonng" # 设置用户名,将来变更记录中会记录,git log命令可以查看变更记录
git config --global user.email "sonng@abc.com" # 设置用户的邮箱,变更记录中也会记录
git config --global color.ui auto # 让git命令以彩色显示
git config --global alias.chkt checkout # 将checkout命令简化为chkt
git config --global core.quotepath off # 有了这个设置,在Windows命令行下,存在非ASCII字符时才能正常显示
操作本地仓库
$ cd i: # 进到I盘根目录下
$ mkdir tutorial # 创建目录
$ cd tutorial # 进入该目录
$ git init # 创建本地仓库,初始化
Initialized empty Git repository i:/tutorial
在tutorial里建立一个名为『sample.txt』的文本文件,并写入一下内容:
连猴子都懂的Git命令
$ git status # 查看状态,然后会显示下面这样。可以看到新建的sample.txt还处于untracked未索引状态
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
sample.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add sample.txt # 根据提示用add命令将该文件加入索引。加入所有文件:git add .
$ git status # 再看下状态,发现sample.txt已经被索引,下面就可以提交到仓库了
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: sample.txt
$ git commit -m "01 sample.txt第一次提交" # 提交到仓库
[master (root-commit) a00d89f] 01 sample.txt第一次提交
1 file changed, 1 insertion(+)
create mode 100644 sample.txt
$ git status # 看下状态
On branch master
nothing to commit, working tree clean # 看来提交成功了
$ git log # 看下日志
commit a00d89fc564e55e78624f2fca021db4f0d983417 # 这个常常的字符串,是用来唯一标识此次提交的
Author: sonng <sonng@qq.com> # 前面设置的用户和用户邮箱现在除了了,说明是谁提交的,联系方式是什么
Date: Thu Jun 29 08:45:45 2017 +0800
01 sample.txt第一次提交 # 前面提交时,添加的注释信息
$ gitk # 这是个图形化工具
操作远程仓库
一个软件往往是一个团队完成的,这就涉及到代码的同步
到github.com开个账户,settings里面有个Repository,建立一个远程仓库,并获得地址:https://github.com/sonng233/mastergit.git ,其中mastergit是仓库名
$ git remote add origin https://github.com/sonng233/mastergit.git
# remote命令用于添加远程仓库,origin是仓库别名,后面的url是仓库地址
# 为什么名称是origin:因为在将来pull或者push的时候,如果省略仓库名,那默认的仓库名就是origin。就是为了省事
$ git push origin master # 将本地仓库push到远程origin仓库的master分支。这里还会要求github的用户名/密码
# 然后打开github的这个仓库,可以看到跟本地相同的sample.txt
# 团队协作,自己的代码要push上去,别人也会pull你的代码下来
$ cd e:/
$ git clone https://github.com/sonng233/mastergit.git # 将远程仓库全部克隆复制下来,会要求github的用户名密码
# 查看是否有sample.txt,并查看其内容,并添加这条内容:add 把变更录入到索引中
$ git add sample.txt # 添加到索引
$ git commit -m "02 添加add说明" # 提交到本地仓库
$ git push # push到远程仓库,在克隆的仓库内,push时可以省略仓库名称和分支
# 到github网站上可以看到添加了“add 把变更录入到索引中”的sample.txt
$ cd i:/tutorial
$ git pull origin master # 将远程仓库pull拉取下来。别人修改了远程仓库,将修改后的结果拉取到本地仓库
# 可以看到tutorial仓库中的sample.txt已更新
$ git log # 通过日志查看下,可以看到2此更改记录
合并冲突的记录
多人编辑同一个文档,很容易产生冲突
在同一个文档同一个位置,自己修改了commit到本地仓库,还没有push到远程仓库
别人也修改了同一文档同一位置,并push到了远程仓库
这时候,自己push到远程仓库会被拒绝rejected,这时候就要修改本地仓库的文档
# 先制造一个冲突
# 将I盘下的tutorial中的sample.txt修改下,加入如下内容:commit 记录索引的状态
$ cd i:/tutorial # 先到 I 盘下操作
$ git add sample.txt
$ git commit -m "03 添加commit说明" # commit到本地仓库,先不push到远程仓库
$ cd e:/tutorial # 然后到 E 盘下操作。将该目录下的sample.txt修改:pull 取得远端数据库的内容
$ git add sample.txt
$ git commit -m "04 添加pull说明"
$ git push # push到远程仓库
$ cd i:/tutorial # 到 I 盘下操作
$ git push # push远程仓库。此时会失败被拒绝rejected
# 下面手动解决冲突
$ git pull origin master # 将远程仓库拉取下来,然后会显示合并时的冲突信息:Merge conflict in sample.txt
# 打开sample.txt文件,如下面所示
连猴子都懂的Git命令
add 把变更录入到索引中
<<<<<<< HEAD
commit 记录索引的状态
=======
pull 取得远端数据库的内容
>>>>>>> 4c0182374230cd6eaa93b30049ef2386264fe12a
"======"以上是本地仓库的内容,以下是远程仓库的内容
将以上冲突修改后保存,再add/commit/push
最后看下更改记录
$ git log --graph --oneline
总结
$ git add sample.txt # 添加到索引
$ git commit -m "提交说明" # 提交到本地仓库
$ git push origin master # push到远程仓库
$ git pull origin master # 从远程仓库pull下来
$ git clone https://github.com/sonng233/mastergit.git # 克隆远程仓库
$ git config --global user.name "sonng" # 设置用户名,将来变更记录中会记录,git log命令可以查看变更记录
$ git config --global user.email "sonng@abc.com" # 设置用户的邮箱,变更记录中也会记录
$ git config --global color.ui auto # 让git命令以彩色显示
$ git config --global alias.chkt checkout # 将checkout命令简化为chkt
$ git config --global core.quotepath off # 有了这个设置,在Windows命令行下,存在非ASCII字符时才能正常显示
$ git --version #
$ git init # 创建本地仓库,初始化
$ git status # 查看状态,然后会显示下面这样。可以看到新建的sample.txt还处于untracked未索引状态
$ git log # 看下日志
$ git remote add origin https://github.com/sonng233/mastergit.git # 设置远程仓库
$ git log --graph --oneline # 查看更改记录