Git基础
1.创建版本库
$ mkdir learngit // 创建工作区(目录文件夹)learngit,命名最好都用英文
$ cd learngit // 打开目录
$ pwd // 查询存储位置
$ git init // git init
命令把这个目录变成Git可以管理的仓库,如果你没有看到 .git(Git版本库)
目录,那是因为这个目录默认是隐藏的,用
ls -ah
命令就可以看见
//然后在learngit 文件夹中写入readme.txt文件,并写入内容
//这样就可以将写好的文件添加到版本库中
$ git add readme.txt //命令git add
告诉Git,把文件添加到仓库
$git commit -m "wrote a readme file" //git commit
告诉Git,把文件提交到仓库, git commit
命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files." //add可以一次添加已经写好的多个文件,而commit可以一次就说明添加的所有文件。-m "修改的记录名"(最好清晰的指出)
2. 修改文件内容,查看与提交
$ git status
// 显示文件的状态,若修改了reradme.txt文件,此命令可以让我们时刻掌握仓库当前的状态,readme.txt被修改过了,但还没有准备提交的修改。
$ git diff //显示修改的具体内容
3.版本回退
$ git log //记录commit的不同(id不同),即显示上文的每次修改,是commit -m "修改的记录名",简化版本的为 $ git log --pretty=oneline
//首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交id,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。$ git reset --hard HEAD^
//
把当前版本回归到上一个版本,就可以使用
git reset
命令、$ cat readme.txt //cat+文件名即查看文件内容
$ git reset --hard id
//就可实现跳转到那个版本的commit中,此 id 即为那时 提交 的 commit 的 id ,写前几位即可(具体参照廖雪峰官方)
$ git reflog //记录所有的 HEAD 的变化,因此即便你丢失关闭了命令行,你也能找出那个你需要版本的 commit 的 id.
4.每次修改,只有先将工作区的内容add放入暂存区(stage)后再commit放入master ,文本内容才能真正的被放在master中
5.撤回
$ git checkout -- readme.txt //git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销
$ git reset HEAD readme.txt //将文件撤回到工作区中,即从暂存区stage移回工作区
$ git reset --hard HEAD^/id //将 MASTER 中的到上一次(以上的命令在执行时,Git的工作平台会显示相应的提示的,相应往上面推)
类似:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,丢弃修改,分两步,第想一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交
6.删除文件
$ rm test.txt //删除文件test.txt
7.将文件推送到github (将本地库的master中的文件上传至github远程库)
$ git remote add origin git@gtihub.com:your githubname/your_file_name.git //远程推送至github$ git push -u origin master
//第一次推送master分支的所有内容;
$ git push origin master //之后的每一次推送
8.从远程库中克隆到本地库中
$ git clone git@git.com:your_github_name/your_file.git //从远程库中克隆至本地库
9.分支管理
(1)定义:自己在github中拥有一个独立的工作空间,只要自己才能运用及看到的空间,便于工作。
(2)创建和切换至dev分支:$ git checkout -b dev 相当于
$ git branch dev +
$ git checkout dev
// 用 $git branch
命令查看当前分支,当前分支前会有 * 号标志
(3)更改文本内容后,切换至master分支
$ git checkout master // 切换后会发现本次更改的内容不见了,有回归到了本次未更改的状态
(4)合并分支,目的是将上次在dev分支下更改的内容合并到master分支
$ git merge dev
(5) 删除分支 $ git branch -d dev
(6)手动解决分支冲突 参照廖雪峰
//创建新分支后修改文本内容,然后add,commit,再返回master分支,再修改内容,再 add,commit 。之后合并时会发现有冲突,此时就手动在文本文件中删除那些---《《《信息,然后修改add ,commit,之后再删除分支。