1.在安装完git之后,需要:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2.创建版本库
$ mkdir test 创建版本库
$ cd test 跳转版本库
$ pwd 查看当前目录地址
$ git init 初始化 命令这个目录变成可以管理的仓库
$ ls -ah 命令查看
编写文件时,要用Notepad++编写 使用utf-8 without bom的方式
添加文件时,要将编写的文件放到创建的目录下,在
$ git add readme.txt
添加完文件,需要
$ git commit -m "add 1 files."
3.修改文件后的操作
首先,将readme.txt文件的内容进行更改 例如:添加一个单词distributed
$ git status 查看状态
查看结果如下:
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
说明,我们readme.txt文件的内容已经被更改了,需要通过
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
查看了我们修改的不同地方,然后需要我们
$ git add readme.txt
在查看状态就ok了
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: readme.txt
说明,我们需要将readme.txt文件提交
$ git commit -m "add distributed"
在查看下状态
$ git status
# On branch master
nothing to commit (working directory clean)
4.版本的更改
$ git log 来查看历史记录 内容量大
$ git log --pretty=oneline 查看历史,清晰
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,
也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),
上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
回退到上个版本
$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed
查看
$ cat readme.txt
Git is a distributed version control system.
Git is free software.
如果想回到最新的版本怎么办?
$ git reset --hard 12345654 //就是到上方我们操作的地方查找她的id
如果不小心关掉,但是还想要回到最新的版本呢?
$ git reflog 进行查看记录的每一条命令
5.管理修改
当一个文件首先更改了一次,查看状态,并添加到暂缓区,然后再修改文本内容,提交commit内容
结果却是第一次修改提交上了,第二次修改没有被提交,我们需要在一次添加到暂缓区,然后提交
用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:
$ git diff HEAD -- readme.txt
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
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.
+Git tracks changes of files.
6.撤销修改
*如果没有将修改的内容添加到暂缓区,可以使用$ git checkout -- readme.txt 来将修改的内容改回到原来的状态
*git checkout -- file命令中的--很重要,没有--,就变成了“创建一个新分支”的命令,
我们在后面的分支管理中会再次遇到git checkout命令。
*如果已经将修改的内容添加到暂缓区,但是没有提交,我们可以先git status
然后在 git reset HEAD file 然后再git status查看下,现在暂存区是干净的
然后我们在使用git checkout -- file 将工作区的修改丢弃
7.删除文件
通过rm file_name 删除内容
通过git rm file_name
git commit -m "remove file_name" 删除内容
通过 git checkout -- file_name 恢复到最新版本 可是不对啊???????????
8.远程仓库
通过 ssh-keygen -t rsa -C "youremail@example.com" 然后就默认的enter就可以了
到主目录下查看是否有.ssh文件 ,.ssh文件目录下有两个子文件id_rsa 和 id_rsa.pub
id_rsa 是私钥,id_rsa.pub是公钥 ,我们在github中设置SSH的时候,只需要公钥
9.从远程库克隆
使用git clone 命令克隆
10.创建和合并分支
每次提交,Git都吧它们穿成一挑时间线,这条时间线就是一个分支。截止目前,只有一条时间线,在Git里,这个分支叫主分支,
及master分支,HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能
当我们创建新的分支时,如dev时,Git新建了一个指针叫dev,指向master相同的提交,在把HEAD指向dev,就表示当前分支在dev上
在主分支时,不能直接创建分支--git branch dev 只能创建并切换到分支--git checkout -b dev
在文件learngit中可以
查看分支 git branch
创建分支 git branch name
切换分支 git checkout name
创建+切换分支 git checkout -b name
合并某分支到当前分支 git merge name
删除分支 git branch -D name
11.解决冲突
当在主分支上和其他分支上提交分别提交内容,发生了冲突,首先提交查看状态,冲突之后解决冲突,在提交
用git log --graph命令可以看到分支合并图
12.合并分支
使用git merge --no-ff -m "merge with no-ff" dev //是将dev上的分支合并,参数--no-ff表示禁用Fast forward
13.bug分支
临时存储命令 git stash
如果是在master上创建分支 则 git checkout -b issue-101
添加并提交 git add file_name git commit -m "fix bug 101"
完成合并 就删除分支 issue-101
使用 git stash list 查看我们之前的工作现场
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了;
14.Feature分支
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name> 强行删除
15.多人协作
查看远程信息 git remote 或者,用git remote -v 显示更详细的信息
推送分支,就是把该分支上的所有本地提交送到远程库。推送时,要指定本地分支,这样,git就会把改分支推送到
远程库对应的远程分支上
git push origin master
如果推送到其他分支,如dev,就改成:
git push origin dev
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2.创建版本库
$ mkdir test 创建版本库
$ cd test 跳转版本库
$ pwd 查看当前目录地址
$ git init 初始化 命令这个目录变成可以管理的仓库
$ ls -ah 命令查看
编写文件时,要用Notepad++编写 使用utf-8 without bom的方式
添加文件时,要将编写的文件放到创建的目录下,在
$ git add readme.txt
添加完文件,需要
$ git commit -m "add 1 files."
3.修改文件后的操作
首先,将readme.txt文件的内容进行更改 例如:添加一个单词distributed
$ git status 查看状态
查看结果如下:
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
说明,我们readme.txt文件的内容已经被更改了,需要通过
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
查看了我们修改的不同地方,然后需要我们
$ git add readme.txt
在查看状态就ok了
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: readme.txt
说明,我们需要将readme.txt文件提交
$ git commit -m "add distributed"
在查看下状态
$ git status
# On branch master
nothing to commit (working directory clean)
4.版本的更改
$ git log 来查看历史记录 内容量大
$ git log --pretty=oneline 查看历史,清晰
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,
也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),
上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
回退到上个版本
$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed
查看
$ cat readme.txt
Git is a distributed version control system.
Git is free software.
如果想回到最新的版本怎么办?
$ git reset --hard 12345654 //就是到上方我们操作的地方查找她的id
如果不小心关掉,但是还想要回到最新的版本呢?
$ git reflog 进行查看记录的每一条命令
5.管理修改
当一个文件首先更改了一次,查看状态,并添加到暂缓区,然后再修改文本内容,提交commit内容
结果却是第一次修改提交上了,第二次修改没有被提交,我们需要在一次添加到暂缓区,然后提交
用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:
$ git diff HEAD -- readme.txt
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
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.
+Git tracks changes of files.
6.撤销修改
*如果没有将修改的内容添加到暂缓区,可以使用$ git checkout -- readme.txt 来将修改的内容改回到原来的状态
*git checkout -- file命令中的--很重要,没有--,就变成了“创建一个新分支”的命令,
我们在后面的分支管理中会再次遇到git checkout命令。
*如果已经将修改的内容添加到暂缓区,但是没有提交,我们可以先git status
然后在 git reset HEAD file 然后再git status查看下,现在暂存区是干净的
然后我们在使用git checkout -- file 将工作区的修改丢弃
7.删除文件
通过rm file_name 删除内容
通过git rm file_name
git commit -m "remove file_name" 删除内容
通过 git checkout -- file_name 恢复到最新版本 可是不对啊???????????
8.远程仓库
通过 ssh-keygen -t rsa -C "youremail@example.com" 然后就默认的enter就可以了
到主目录下查看是否有.ssh文件 ,.ssh文件目录下有两个子文件id_rsa 和 id_rsa.pub
id_rsa 是私钥,id_rsa.pub是公钥 ,我们在github中设置SSH的时候,只需要公钥
9.从远程库克隆
使用git clone 命令克隆
10.创建和合并分支
每次提交,Git都吧它们穿成一挑时间线,这条时间线就是一个分支。截止目前,只有一条时间线,在Git里,这个分支叫主分支,
及master分支,HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能
当我们创建新的分支时,如dev时,Git新建了一个指针叫dev,指向master相同的提交,在把HEAD指向dev,就表示当前分支在dev上
在主分支时,不能直接创建分支--git branch dev 只能创建并切换到分支--git checkout -b dev
在文件learngit中可以
查看分支 git branch
创建分支 git branch name
切换分支 git checkout name
创建+切换分支 git checkout -b name
合并某分支到当前分支 git merge name
删除分支 git branch -D name
11.解决冲突
当在主分支上和其他分支上提交分别提交内容,发生了冲突,首先提交查看状态,冲突之后解决冲突,在提交
用git log --graph命令可以看到分支合并图
12.合并分支
使用git merge --no-ff -m "merge with no-ff" dev //是将dev上的分支合并,参数--no-ff表示禁用Fast forward
13.bug分支
临时存储命令 git stash
如果是在master上创建分支 则 git checkout -b issue-101
添加并提交 git add file_name git commit -m "fix bug 101"
完成合并 就删除分支 issue-101
使用 git stash list 查看我们之前的工作现场
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了;
14.Feature分支
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name> 强行删除
15.多人协作
查看远程信息 git remote 或者,用git remote -v 显示更详细的信息
推送分支,就是把该分支上的所有本地提交送到远程库。推送时,要指定本地分支,这样,git就会把改分支推送到
远程库对应的远程分支上
git push origin master
如果推送到其他分支,如dev,就改成:
git push origin dev
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。