Git的基本使用

来源:互联网 发布:nginx 400 bad request 编辑:程序博客网 时间:2024/06/07 06:27


一、Git命令

1.Git添加和提交一个或多个文件

1.使用git config命令的--global参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

2.用dos命令,进入一个合适的位置

mkdir test 建一个git仓库的目录

cd test 进入目录

pwd 命令用于显示当前目录(注意:为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

通过git init 命令把这个目录变成Git可以管理的仓库, 进入test目录出现.git 目录(这目录是Git来跟踪管理版本库的,不要随意修改,会破坏Git仓库,如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。)

使用Windows的童鞋要特别注意:千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题。建议使用Notepad++记得把Notepad++的默认编码设置为UTF-8 without BOM。

3.在test目录下建一个hello.txt文件,内容为:

我今天吃了一个苹果。

把一个文件放到Git仓库需要两步:

第一步:用命令git add告诉Git,把文件添加到仓库;

git add hello.txt

第二步:用命令git commit,把文件提交到仓库:

git commit -m "这是本次提交的说明"

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

git add hello.txt

git add hello1.txt hello2.txt

git commit -m "这次添加了三个文件"

2.处理有改动的内容

修改一下hello.txt中的内容为:

今天我吃了两个梨。

运行git status命令;得知hello.txt被修改过了,但还没有准备提交的修改。

git diff命令:查看我们有改动的内容。

再用git add hello.txt 提交;然后用git status 查看当前仓库状态,然后git commit提交;

3.版本的管理

git log命令:版本控制系统肯定有某个命令可以告诉我们历史记录;

git log --pretty=oneline 是简化信息

git reset --hard HEAD^ 是回到上个版本,HEAD是指当前,HEAD^指上一个,HEAD^^指上上个,当前往上1000个可以写HEAD~1000

git reset --hard 版本号 就可以回到指定的版本(用于回到以前版本后,想要得到新版本)(版本号只需要写前几位就可以,尽量多几位,git会找到匹配的)

在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令:

git reflog用来记录你的每一次命令;

git checkout -- hello.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是hello.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是hello.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

git reset HEAD hello.txt可以把暂存区的修改撤销掉(unstage),重新放回工作区:

rm hello.txt 把文件删除了,用git status 就可以知道哪些文件被删除了

用命令git rm删掉,并且git commit,是版本库中删除该文件;

git checkout -- hello.txt 恢复到最新版本

4.远程仓库

1.推送到远程仓库(GItHub官网)

第一步:由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,打开C盘->用户->用户名,看看有没有.ssh目录,再看看这个目录下有没有id_rsa和id_rsa.pub两个文件,如果没有

ssh-keygen -t rsa -C "youremail@example.com一路回车,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
第二步:登陆GitHub,打开“settings”,“SSH and GPG Keys”页面:然后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点击Add SSH Key。

第三步: git remote add origin git remote add git@github.com:github账户名/test.git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

第四步:git push -u origin master 把本地库的所有内容推送到远程库上,之后git push origin master推送最新修改。

2.从远程用clone命令,克隆到本地一个库:

git clone git@github.com:github用户名/gihub上的仓库名.git(我的仓库名是:github_test)

cd github_est 进入

ls 查看所有文件

实际还可以用这种地址:https://github.com/github用户名/github_test.git,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议

5.分支管理

1.创建于合并分支

git checkout -b dev 我们创建dev分支,然后切换到dev分支;git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

git branck dev

git checkout dev

git branch 查看当前分支

git checkout master 就可以切换回master分支(这个时候改动的内容,提交到dev分支上的内容,在master分支上就没有改过的内容)

git merge devdev分支的工作成果合并到master分支上(就可以看到,和dev分支的最新提交是完全一样的);

git branch -d dev 合并完成后,就可以放心地删除dev分支了;

小结:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

git log --graph命令可以看到分支合并图

2.解决冲突

git checkout -b feature1 创建一个新的分支;(修改文本内容后,提交)

git checkout master 切换到master分支;

master分支上把文件的最后一行添加一个内容,然后提交;

这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看;

git merge feature1 (Git告诉我们,文件存在冲突,必须手动解决冲突后再提交,git status 也可以告诉我们冲突的文件,然后打开文件看看,会出现>>>><<<<=====)

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们修改后保存,然后提交;

git log --graph --pretty=oneline --addrev-commit 用带参数的git log也可以看到分支的合并情况;

git branch -d feature1 删除feature1分支;






0 0