Git仓库的基本用法
1. git 的初始化
$ git config --global user.name "Your name"
$ git config --global user.email "email@example.com"
1. 创建版本库
1.1 第一步
$ mkdir learngit
$ cd learngit
$ pwd(该命令用于显示当前目录)
1.2. 第二步
$ git init 初始化仓库
3. 把文件添加到版本库
$ git add readme.txt (可以多次使用)
$ git commit -m "wrote a readme file"
在这里需要注意的是,我们可以添加多个文件过去:
$ git add <file> (可以添加多个文件)
4. 查看仓库的状态
$ git status 掌握当前的仓库的动态
$ git diff <file> 查看文件哪里被修改了
5. 版本退回
$ git log (提交的日志)
$ git reflog (查看命令历史)
命令git log
,显示从最近到最远的目录
$ git log --pretty=oneline
我们把版本退回上一个
git reset --hard HEAD^ (将版本退回到HEAD^)
git reset --hard <commit id>
6. 工作区和暂存区
工作区(Working Directory):
~~~~~~~
工作区,就是你在电脑里能看到的目录。比如learngit
文件夹。
版本库(Respository):
~~~~~~~
工作区有个隐藏目录.git
,这里存放的就是Git
的版本库
$ git add 把文件添加进去,实际就是把文件修改添加到暂存区
$ git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支
6.1 管理修改
$ git diff HEAD --readme.txt
修改过程
第一次修改 -> add -> 第二次修改 -> add -> commit
如果不add到暂存区,加入commit.
撤销修改
~~~~~~~
利用get checkout --file
可以丢弃工作区的修改。
$ git checkout --readme.txt
其本质就是把版本库的版本替换工作区的版本,无论
~~~~~~~
命令git checkout --readme.txt
的意思就是,把readme.txt
文件所在的工作区的修改全部撤销,这里有两种情况:
~~~~~~~
一种是readme.txt
修改后没有放到暂存区,现在,撤销修改就退回到版本库一样的状态。
~~~~~~~
一种是readme.txt
修改后,放到暂存区,又作了修改,现在,撤销修改就退回到添加到缓存区后的状态。
~~~~~~~
总之,就是让这个文件回到最近一次git commit
和 git add
时的状态。
~~~~~~~
利用git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回到工作区。
$ git reset HEAD readme.txt
git reset 命令既可以退回版本,也可以把暂存区退回到工作区。
删除文件
~~~~~~~
在Git
中,删除也是一个修改操作。
$ rm test.txt
~~~~~~~
现在你有两个选择,一确实要从版本库中删除文件,那就用命令 git rm
删掉, 并且 commit
:
$ git rm text.txt
$ git commit -m "remove text.txt"
远程仓库
7. Github的仓库
~~~~~~
创建一个learngit
仓库还是空的,可以把本地仓库的内容推送到 Github
仓库。
$ git reomte add orgin git@github.com:kaitokuriba7/learngit.git
然后可以把本地库所有的内容
$ git push -u origin master
~~~~~~ 推送最新的修改
$ git push origin master
克隆远程库
$ git clone 命令
8.分支管理
8.1创建与合并分支
~~~~~~ 首先,我们创建dev分支,然后切换到dev分支:
创建dev分支,然后切换到dev分支:
$ git checkout -b 'dev'
相当于两条命令
$ git branch dev
$ git checkout dev
~~~~~~
利用git branch
命令会列出所有分支
$ git branch
*dev
master
~~~~~~ 然后修改分支,在分支修改完成后,我们把dev分支的工作成果合并到master上。
第一步是切换回master线
$ git checkout master
第二步是把dev分支合并到master上
$ git merge dev
~~~~~~ 合并完成后,就可以删除分支了
$ git branch -d dev
~~~~~~ 最后,查看branch,就只剩下master分支了
$ git branch
* master
8.2 小结
~~~~~~ 关于分支的小结如下:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支: git branch -d name
8.3 解决冲突
~~~~~~
若同时修改master以及branch中的内容,就可能引起冲突。在这种情况下,Git
无法快速合并,需要解决冲突再合并。
8.4 分支管理策略
~~~~~~
如果想要不丢掉分支的信息,就需要强制禁止使用“Fast forward”模式,Git
就会在merge时生成一个新的commit,这样,在分支历史就可以看出分支信息。
git checkout -b dev
git add readme.txt
git commit -m "add merge"
git checkout master
git merge --no-ff -m "merge with no-ff" dev
~~~~~~ 利用带参数的git log查看分支信息
$ git log --graph --pretty=oneline --abbrev-commit