一、本地git
-
1、设置git
可以试着输入git
,看有没有安装。没有安装自行安装。
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
注意git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
- 可查看git的绑定地址,查看用户名和邮箱地址,修改执行上一步即可:
$ git config user.name
$ git config user.email
-
2、创建版本库(本地)
- 通过
git init
命令把这个目录变成Git
可以管理的仓库:
$ git init
Initialized empty Git repository in C:/Users/my/Desktop/git库/.git/
-
3、把文件添加到版本库
- 第一步,用命令
git add
告诉Git,把文件添加到仓库:
$ git add 文件名(添加单个)
$ git add * (添加全部)
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
- 第二步,用命令
git commit
告诉Git
,把文件提交到仓库:
$ git commit -m "添加了...文件"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)```
create mode 100644 readme.txt
git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
- 为什么Git添加文件需要
add
,commit
一共两步呢?因为commit
可以一次提交很多文件,所以你可以多次add
不同的文件,比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
-
4、版本回退
- 用
git log
命令查看:
$ git log
命令显示从最近到最远的提交日志,
- 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上
--pretty=oneline
参数:
$ git log --pretty=oneline
你看到的一大串类似1094adb...
的是commit id(版本号)
- 在Git中,用
HEAD
表示当前版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
$ git reset --hard HEAD^
HEAD is now at e475afc add distributed
- 还可以指定版本进行切换(前几位就行)
$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL
- Git提供了一个命令
git reflog
用来记录你的每一次命令:
$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
-
5、工作区和暂存区
工作区(Working Directory)
,就是你在电脑里能看到的目录
- 第一步用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区; - 第二步用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。 - 因为我们创建
Git
版本库时,Git
自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。
$ git status
-
如果有绿色就是还在暂存区,执行commit提交即可
-
如果有红色就是在工作区发生了变化(修改或添加了),没有调到缓存区
-
commit之后,删除了也会检测到,变成红色。如果add了,但是没commit,这个时候把add的文件删除了,查看status,还是绿色状态,但是提交之后会直接变红,告知已删除。
如果是不小心删的,想撤回,不要紧,执行
↓
下面操作git checkout -- test.txt
,会将add
过的或者commit
过的删除文件撤回。-
6、丢弃工作区的修改
$ git checkout -- test.txt
撤回命令作用于之前提交过缓存区的文件,如果是新建的文件,没有添加过缓存区,无效。
命令git checkout -- test.txt
意思就是,把test.txt文件在工作区的修改全部撤销
(当然也可以手动改过来,如果不嫌麻烦或者记得的话)
-
7、缓存区退回到工作区
如果执行了add命令,使用上一步就不好使了,需要执行↓
$ git reset HEAD test.txt
$ git checkout -- test.txt
先将状态撤回到工作区,再将状态撤回到修改前
Unstaged changes after reset:
M test.txt
二、远程仓库(GitHub)【都是绑定的自己的账号内的仓库】
-
1.添加关联的远程仓库
$ git remote add origin 'https://github.com/suibianni/ABB.git'
usage: git remote add [<options>] <name> <url>
用法: git remote add 起个名字 哪个url
也可添加多几个,名字不能重复(可添加别人的,但是没用,push不上去)
-
2.查看关联的远程仓库
$ git remote -v
first https://github.com/suibianni/BBC.git (fetch)
first https://github.com/suibianni/BBC.git (push)
origin 'https://github.com/suibianni/ABB.git' (fetch)
origin 'https://github.com/suibianni/ABB.git' (push)
-
3.删除本地指定的远程地址
$ git remote remove origin 即可删除
-
4.修改关联远程仓库
$ git remote set-url origin https://github.com/suibianni/disan.git
此时再查看关联的存仓库就变了,并且可以更改"其他名字对应的url"
$ git remote -v
first https://github.com/suibianni/BBC.git (fetch)
first https://github.com/suibianni/BBC.git (push)
origin https://github.com/suibianni/disan.git (fetch)
origin https://github.com/suibianni/disan.git (push)
-
5.推送到远程master分支
$ git push -u first master (首次执行即可关联)
$ git push first master (之后再推就不用-u了)
-
6.克隆,克隆一个本地仓库
$ git clone url
如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
三、分支管理
-
1.创建分支
$ git branch dev
-
2.切换分支
$ git checkout dev
-
3.创建并切换分支,等同于上两步
$ git checkout -b dev
-
4.查看当前分支
$ git branch
* dev (带星号表示当前分支)
master
-
5.使用dev分支push文件
先对test.txt文件修改,添加1234567890
,执行add
,commit
$ git push -u origin dev (push到了origin库的dev分支)
再次切换回master
分支git checkout master
后发现,test.txt文件还是原来的样子,并没有添加1234567890
,因为那个提交是在dev分支上,而master分支此刻的提交点并没有变,如果想要一同改变,需要↓
合并分支。
-
6.合并分支
$ git merge dev
合并指定分支到当前分支。再查看test.txt就和更改后的一样的。
-
7.删除分支
$ git branch -d dev
删除之后就只剩下master分支了
如果要丢弃一个没有被合并过的分支,可以通过↓
大写D
参数
$ git branch -D <name> 强行删除
相关:https://blog.csdn.net/u013474436/article/details/51287128