git使用(超详细!!!)

创建仓库,添加文件到仓库

1.本地创建仓库,进入该仓库

$mkdir my_repo
$cd my_repo

2.初始化仓库

$git init

可以看到my_repo下多了一个.git文件
如果没有的话,选择查看,勾选显示隐藏的项目(因为”.”开头的文件是隐藏文件)
3.创建一个新的文本文件

$vim readme.txt

往readme.txt中写入内容,我这里写入的是“first write”

4.将新文件添加到仓库

注意:在git中有一个暂存区,所有add操作,都是将文件放到暂存区。

$git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.

5.提交到仓库

扫描二维码关注公众号,回复: 2007889 查看本文章

注意:commit就是将暂存区的内容提交到当前分支中

$git commit - m “first write”
[master (root-commit) be2fbbb] first write
1 file changed, 1 insertion(+)
create mode 100644 readme.txt

-m 后面的内容,是对本次提交的说明

也可以一次提交多个文件,如下

$git add file1.txt
$git add file2.txt
$git add file3.txt
$ git commit -m “add three files”
[master 4c66b1d] add three files
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1.txt
create mode 100644 file2.txt
create mode 100644 file3.txt

版本控制

1.修改readme.txt

vim readme.txt
first write
I modified this file
添加“I modified this file”到readme.txt

2.添加修改后的文件到仓库

修改文件后,可以用git status,查看当前仓库的状态

$ git status
On branch master
Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git checkout – …” to discard changes in working directory)
modified: readme.txt
no changes added to commit (use “git add” and/or “git commit -a”

添加修改后的文件到仓库,并提交

$git add readme.txt
$git commit -m “first modified”

再修改文件,添加“try second modified”到文件,和上面一样添加提交

$git add readme.txt
$git commit -m “second modified”

3.git log来查看历史记录

$ git log
commit db7532e4607e3c38c26572f174aad96b56bf764f (HEAD -> master)
Author: yuajuan [email protected]
Date: Wed Jan 10 10:23:08 2018 +0800
second modified
commit ea1d64f2233b25b05f2b2152fa3f3d86d986926b
Author: yuajuan [email protected]
Date: Wed Jan 10 10:22:02 2018 +0800
first modified
commit 4c66b1d72e586763fa3e1054b605981c7ece1865
Author: yuajuan [email protected]
Date: Wed Jan 10 10:11:00 2018 +0800
add three files
commit be2fbbb9b5e07549742152dc38d74b880b0b54b5
Author: yuajuan [email protected]
Date: Wed Jan 10 10:08:50 2018 +0800
first write

在这里我们可以看到在仓库中的每一个版本情况
commit后面的一串就是commit id。
使用下面的命令可以让显示更加简洁

$git log –pretty=oneline
$ git log –pretty=oneline
db7532e4607e3c38c26572f174aad96b56bf764f (HEAD -> master) second modified
ea1d64f2233b25b05f2b2152fa3f3d86d986926b first modified
4c66b1d72e586763fa3e1054b605981c7ece1865 add three files
be2fbbb9b5e07549742152dc38d74b880b0b54b5 first write

4.回退到上一个版本

Git必须知道当前版本是哪个版本,在Git中用HEAD表示当前版本

$ git reset –hard head^
HEAD is now at ea1d64f first modified

可以看到这里ea1664f就是上面git log下的第二行,这里已经回退到上一个版本。
如果想回退到上上个版本,就是 git reset –hard head^^。要回退到上100个版本,当然不是写
100个^啦,只需要 git reset –hard head~100就好啦。
(使用commit id时,可以不用写全,写出前面一部分,能够唯一标识就好了,git会自动去查找匹配的id)

现在,再来看看历史记录

$ git log –pretty=oneline
ea1d64f2233b25b05f2b2152fa3f3d86d986926b (HEAD -> master) first modified
4c66b1d72e586763fa3e1054b605981c7ece1865 add three files
be2fbbb9b5e07549742152dc38d74b880b0b54b5 first write

恐慌!刚刚的”second modified“不见了,我想回到之前那个版本该怎么办!

git reset –hard commitId

直接使用这条命令就好啦,但是我们怎么知道commitId呢。
如果这个git窗口你还没关闭的话,翻一翻前面的记录就能找到”second modified”的id是db7532e46,那么我们直接git reset –hard db7532e46 就好了。
如果你关闭了之前的窗口,那么用下面的命令,可以看到你的每一次命令

$ git reflog
ea1d64f (HEAD -> master) HEAD@{0}: reset: moving to head^
db7532e HEAD@{1}: commit: second modified
ea1d64f (HEAD -> master) HEAD@{2}: commit: first modified
4c66b1d HEAD@{3}: commit: add three files
be2fbbb HEAD@{4}: commit (initial): first write

第二行就能看到提交“ second modified”的版本号啦!

撤销修改和删除文件git chekout

git checkout就是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以还原。
撤销修改主要用到git chekout
分两种情况:
第一种是在工作区做了修改,即git add 命令之前。
执行 git checkout – readme.txt
那么readme.txt会恢复到上次执行git commit命令的状态。
第二钟是提交到暂存区后做了修改,即git add命令之后。
执行执行 git checkout – readme.txt
那么readme.txt会恢复到上次执行git add命令的状态。

删除文件

删除工作区的文件

$ rm readme.txt

恢复工作区的文件

$git checkout – readme.txt

删除版本库中的readme.txt

$git re readme.txt

远程仓库

1.创建SSH Key
在用户目录下,查看是否有.ssh目录,如下:
这里写图片描述

如果没有的话,在cmd中执行命令ssh-keygen -t rsa –C “[email protected]
id_rsa是私钥,id_rsa.pub是公钥。
我们要将这个公钥配置到github的账号上。

登陆到github上,然后按照下面操作:
这里写图片描述

这里写图片描述
2.在github上创建一个库test
3.添加远程库

$ git remote add origin [email protected]:yuajuan/test.git

注意:需要将上面的yuajuan换成你自己的github用户名,并把test换成你自己仓库名
这里origin即为这个远程库的名称

3.把本地库的所有内容推送到远程库上

$git push -u origin master

查看远程库

$git remote
$git remote -v #查看更详细的信息
可以到github上的test库下查看,本地git库中的文件已经push进去了。

从远程库克隆文件到本地库

只需要 git clone [email protected]:username@repo_name 即可

分支管理

branch命令总结

查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name

之前的操作都只有一个master分支
现在创建一个develop分支,并切断到该分支下工作
$ git checkout -b develop
Switched to a new branch ‘develop’
在工作区创建文件的file_dev.txt,add后再commit

$ git add file_dev.txt
$ git commit -m “add file_dev to develop”
[develop 6a9c101] add file_dev to develop
1 file changed, 1 insertion(+)
create mode 100644 file_dev.txt

现在切换回master

$git checkout master

查看master分支中的提交的文件

$git ls-files

发现并没有file_dev.txt这个文件,那是因为我们是在develop分支中提交的,所以并不会影响到master。
下面合并develop分支到master

$ git merge develop
Updating 1ca0d91..6a9c101
Fast-forward
file_dev.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 file_dev.txt

合并完成后,可以删除develop分支

合并冲突

上面的例子,在合并时,是Fast-forward,即快速合并。
并不是每次合并都能完美进行,有时候会出现冲突
现在创建一个新的分支test1

$git checkout -b test1

在file_dev.txt最后一行添加

test1 branch add something

test1分支提交

$git add file_dev.txt
$git commit -m “add something”

切换到master分支

$git checkout master

在file_dev.txt最后一行添加

master branch add something

master 分支提交

$git add file_dev.txt
$git commit -m “add something”

在master分支上合并test1分支

$ git merge test1
Auto-merging file_dev.txt
CONFLICT (content): Merge conflict in file_dev.txt
Automatic merge failed; fix conflicts and then commit the result.

提示file_dev.txt出现冲突

猜你喜欢

转载自blog.csdn.net/yujuan110/article/details/79020679