步骤
-
首先是安装git,
-
安装完成后,在win搜git bash并以管理员方式启动git bash
-
mkdir GitRepository
在某个盘创建文件夹作为自己的git库 -
git init
把GitRepository文件夹初始化为仓库 -
git config --golbal user.name "ding"
配置自己仓库的用户名 -
git config --golbal user.email "xxx@outlook.com"
配置自己仓库的邮箱 -
vi readme.txt
在仓库创建一个文件,并写入一些内容 -
git add readme.txt
让git能识别到readme.txt.但是会遇到下面问题 -
原因是存在符号转义问题
windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示,解决办法:git config --global core.autocrlf false
-
如果我们目前是Window平台并出现该警告,啥也别做就行,虽然这个警告难看,但这个警告能保证我们项目团队正常跨系统git操作代码,因为git的Windows 客户端基本都会默认设置 core.autocrlf=true(我们可通过git config core.autocrlf命令查询我们的Windows上该属性是否默认true。如不是true,通过config --global core.autocrlf true命令设置该属性为true),而“core.autocrlf=true”
-
git commit -m "wrote a readme file"
-m是对此次commit的说明
-
git status
命令告诉完美仓库当前的状况,上面显示了修改了readme.txt文件,但是没有提交 -
git diff
可以查看文件变更了哪些内容
-
重新添加和交上readme.txt文件
-
git config --global core.autocrlf false
可以去除git add出现的警告
总结
基础配置
git config --golbal user.name "ding"
配置自己仓库的用户名git config --golbal user.email "xxx@outlook.com"
配置自己仓库的邮箱mkdir GirRepository
创建目录git init
初始化目录为当前工作区touch filename
创建filename文件,可以随意添加一些内容,此时filename在工作区git add filename
把文件添加到暂存区(stage区),可以一次性加入很多文件到暂存区git commit -m "xxx"
把暂存区的所有文件都提交到库中
想撤销文件更改或是回退到之前版本
git diff
可以查看在工作区修改的还没提交的文件和已经提交(commit)的文件的不同git checkout -- filename
当你修改了工作区的文件内容,但是想撤销掉更改,就可以把库中之前提交的filename文件拉取的工作区中,覆盖本地的filenamegit reset HEAD filename
已经提交到暂存stage区的filename文件回退到 modified状态,再通过git checkout -- filename
就能上次commit状态git reset --hard HEAD^
所谓的版本回退,回退到之前的commit版本git reset --hard id
可以通过git log
或是git reflog
查看到的commit的id,跳到某个版本git log
查看commit过的日志和其idgit reflog
查看输入过命令的日志
其他命令
git status
查看目前的提交状态git rm filename
删除工作区的filename,git commit -m "xxx"
提交删除到本地库
关联自己的github库
- 创建SSH Key
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:ssh-keygen -t rsa -C "xxx@example.com"
主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。 - 登陆GitHub,打开“Account settings”,“SSH Keys”页面,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
- 使用本地的git bash远程关联
git remote add origin https://github.com/pickgog/GitRepository.git
git push -u origin master
推上自己的仓库内容git clone https://...............
也可克隆别人的仓库到本地
创建分支
git checkout -b dev
创建dev分支,然后切换到dev分支,- 相当于以下两条命令:
git branch dev
git checkout dev
git branch
查看当前所有分支
$ git branch
* dev
master
git merge dev
把dev上的操作合并到master上去git branch -d dev
删除dev
合并时遇到的问题
git checkout -b feature1
准备新的feature1分支- 修改readme.txt最后一行,改为:
Creating a new branch is quick AND simple.
- 提交
git add readme.txt
,git commit -m "AND simple"
- 切换到master分支:
git checkout master
- 在master分支上把readme.txt文件的最后一行改为:
Creating a new branch is quick & simple.
- 提交:
git add readme.txt
,git commit -m "& simple"
- 现在,master分支和feature1分支各自都分别有新的提交,变成了这样:
- 此时合并会遇到下面的问题
$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
git status
也可以告诉我们冲突的文件- 查看readme文件的内容
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
>
- 修改后在提交
$ git add readme.txt
$ git commit -m "conflict fixed"
[master cf810e4] conflict fixed
- 用
git log
可以查看具体情况
$ git log --graph --pretty=oneline --abbrev-commit
* cf810e4 (HEAD -> master) conflict fixed
|\
| * 14096d0 (feature1) AND simple
* | 5dc6824 & simple
|/