GIT(分布式版本控制系统):
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非 常大的项目版本管理。
1.用git创建(在E盘的git目录下创建)一个叫myWebSite的目录(用于存储个人网站),并把它放到git版本库里:
cd e:/git————-进入操作目录
mkdir myWebSite——新建文件夹
cd myWebSite———进入新建的文件夹
echo 'My website is alive!' > index.html——新建的目录下 新建了一个index.html文件,并初始化了内容
git init—————将所在目录(myWebSite)转化为git版本库(此时的版本库是空的,目录下的文件默认不会被放入版本库中,视为临时文件)
2.将文件添加到版本库中:
git add index.html——将index.html(指定文件)添加到版本库中
git add .——————–将当前目录及子目录中的文件都添加到版本库里
3.配置提交作者:
git config user.name "chen shanshan"————配置姓名
git config user.email "[email protected]"——配置email地址
4.提交文件:(在任何编辑之后,提交之前,都要执行git add命令 去更新索引)
git commit -m "Test use git to commit file." (提交先要进行 git add 操作)
可以设置GIT_EDITOR环境变量来在交互式编辑器(vim)中编辑内容(vim编辑器的使用方式见扩展1),设置方法:export GIT_EDITOR=vim
git commit -am "提交信息" 合并git add 和 git commit 操作(适用于比较小的变更)
5.查看提交:
git status—————显示版本库里 中间状态(已经 add操作 还没 commit操作 / 或commit后修改过)的文件
git log—————— 一系列单独提交的历史。后加 -p 查看前后差异;后加文件/目录 名查看指定文件/目录相关的日志(当前面出现个冒号无法输入命令时,按「q」键)
git show 提交码(50fd4db21ca586dacf547b23b14374e942b81469)–查看特定提交的更详细的信息(不写提交码默认显示最近一次的)
git show-branch --more=10(git show-branch)——————–当前开发分支简洁的单行摘要,–more=10表示最新的10个版本(即提交日志)
6.查看更改之后的差别:
查看工作树和暂存区的差别:git diff
查看工作树和最新提交的差别:git diff HEAD
“+”号标出的是新添加的行,被删除的 行则用“-”号标出:
diff --git a/README.md b/README.md
index e69de29..7ca0b44 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,2 @@
+# git test
+# git
\ No newline at end of file
7.修改(新建)文件:
1.touch 文件名———直接新建一个文件
2.vi 文件名————–新建一个文件并进入编辑状态(已存在文件直接进入编辑状态)
3.如果没用过linux和vim,最直接的就是在windows下新建、修改文件吧!!!
8.版本库内文件的删除和重命名:
删除文件:(和git add一样。git rm 表示想要删除文件,git commit 实现删除操作)
git rm aaa.html bbb.txt删除版本库内的aaa和bbb两个文件 (可连续输入:ls / git rm aaa.txt / git commit -m “Remove aaa.txt”)
重命名文件:git mv index.html aaa.html //(防止git rm命令会将index文件永久删除, 必须先执行mv操作)
git rm index.html
git add aaa.html
git commit -m "Moved index to aaa" //在任意情况下,暂存的变更必须随后进行提交
9.创建版本库副本:
git clone website clone_website(克隆远程仓库:git clone [email protected]:/option/git/provider1.git provider1)
(克隆网站上的版本库副本:git clone \(回车) git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git)
10.其他命令:
查看日志: git log --pretty=oneline
回退:到上一版本:git reset --hard HEAD^
——–到指定版本:git reset --hard 3628164
迁出: git checkout xxx.txt(未放入暂存区:恢复成版本库;放入暂存区:恢复成暂存区)
查看和上一版本变化的内容:git diff xxx.txt
远程版本库:创建公钥:ssh-keygen -t rsa -C “邮箱”
11.分支:
查看分支:git branch (列表显示分支名,所在分支前有*)
查看分支:git log --graph (以图表形式查看分支)
新建分支:git branch 分支名
切换分支:git checkout 分支名
新建并切换分支:git checkout -b 分支名
删除分支:git branch -D 分支名
合并分支:
1.首先切换回master分支:git checkout master
2.然后合并子分支(如:feature-A): git merge --no-ff feature-A(加上 –no-ff参数 创建和并提交,来在历史记录中明确记录下本次分支合
并)
13.更改提交的操作:
查看当前仓库的操作日志:git reflog (所有操作都记录下,可查看回溯历史之前的哈希值)
回溯历史版本:git reset --hard 哈希值(81d5c7e) (取一个之后版本的哈希值就可以实现推进历 史了)
修改上一次提交信息:git commit --amend (分支的合并提交信息可以为:Merge branch ‘分支名 ’)
解决冲突:
打开冲突文件,是这个样子:(等号以上的部分是当前 HEAD 的内容,以下的部分是要合并的分支中 的内容)
# Git Test
<<<<<<< HEAD
- feature-A
- fix-B
>>>>>>> fix-B
可以手动改成下面这样,再执行 git add命令与 git commit命令:
# Git Test
- feature-A
- fix-B
注意:在实际的软件开发中,往往需要删除其中之一,所以各位在处理冲突时,务必要仔细分析冲突部分的内容后再行修改
14.压缩(更改)历史: 提交一个修改到前一个提交中,压缩成一个历史记录(假设最新的一次提交是修改了前一次提交的一个小问题,可将最后一次提交压缩到前一次)
git rebase -i HEAD~2 会在编辑器中打开两个最新的历史记录,将后一个前面的 pick 改为 fixup
15.把已有仓库推送至远程仓库(以首个开发者的身份)
将它设置成本地仓库的远程仓库(与远程仓库建立连接)
git remote add origin https://github.com/用户名/仓库名.git
也可以写成下面:
git remote add origin [email protected]:用户名/仓库名.git
推送至远程仓库(加 -u 是为了将 origin 仓库的 master 分支设置为本地仓库当前分支的上游)
推送至master分支: git push -u origin master
推送至其他分支:git push -u origin 分支名(feature-B) (将本地仓库中的分支 push 给远程仓库并保持分支名称不变)
删除远程仓库上的分支(github上的仓库):git push origin :feature-B
16.从远程仓库获取(以后来合作开发者的身份)
从远程仓库获取 xxx 分支,在本地仓库中提交更改,再将 xxx 分支推送回远程仓库,通过这一系列操作,就可以与其他开发者相互合作,共同培育 xxx 分支,实现某些功能。
获取远程仓库:git clone [email protected]:用户名/仓库名.git (默认处于master分支下)
查看获取后的本地仓库和远程仓库的分支信息:git branch -a
获取远程分支到本地仓库:git checkout -b 本地新建分支名 origin/远程分支名
向本地的分支提交更改(和之前的操作一样),完成后,推送分支:git push
在推送分支之前,先要获取最新的远程仓库分支:git pull origin 远程分支名