centos7 安装git
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
yum -y install git
git version
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
文件操作
# 添加文件到缓存区
$ git add [文件名1] [文件2]
# 添加文件夹到缓存区
$ git add [文件夹]
# 添加所有文件到缓存区
$ git add .
# 查看文件状态
$ git status
# 查看简洁的状态信息 short
$ git status -s
# 停止追踪指定文件,该文件仍会保留在工作区
$ git rm --cached [file]
# 简化,提交和添加提交信息
$ git commit -m '提交信息'
# 跳过添加到缓存区,直接将上一次提交后的修改进行提交
# 所有已经跟踪过的文件暂存起来一并提交
$ git cmmit -a
仓库操作
# 生成空的本地仓库
$ git init
# 让你的本地仓库和远程仓库关联,它可以添加多个
$ git remote add [远程仓库命名] [url]
$ git remote add origin https://g.vimll.com:9888/root/tang.git
# 查看所有远程仓库
$ git remote -v
# 有远程仓库后,将新分支上传
$ git push -u [远程仓库] [分支]
$ git push -u origin master
# 将本地分支上传
$ git push [远程仓库名] [分支名]
$ git push origin master
# 直接推送到远程仓库
$ git push
# 暴力推送到远程仓库,不理会冲突
$ git push --force
# 将远程仓库的代码下载到本地
# 此操作并不会改变本地仓库
# 而是,会在本地有一个远程仓库的分支,如origin/master
$ git fetch [远程仓库]
# 将远程仓库拉取到本地,并合并到本地操作
# 其本质是 fetch 后将,本地分支与远程分支merge
$ git pull [远程仓库] [分支]
回退操作
# 撤销工作区指定文件的操作,撤销至add时的状态
$ git restore [文件]
# 将缓存区的文件回退至工作区
$ git checkout [文件]
# 将缓存区的全部文件回退到工作区
$ git checkout .
# 将工作区回退至上一次commit
$ git reset --hard
# 回退当前分支的HEAD为指定commit
# 同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]
# (默认选项)将HEAD指向指定的提交,暂存区的内容随之改变,工作区内容不变
$ git reset --mixed
# 只是将HEAD引用指向指定的提交,工作区跟暂存区的内容不会改变
$ git reset --soft
分支操作
# 查看当前所有分支
$ git branch
# 新建分支
$ git branch [分支名]
$ git branch dev
# 且换分支
$ git checkout [分支]
$ git checkout master
# 新建并切换到新建的分支
$ git checkout -b [分支]
$ git checkout -b feature_x
# 删除分支,若没有有未被合并的内容,则无法删除
# 不能删除当前所在的分支,如要删除需切换分支
$ git branch -d [分支]
# 强制删除分支
$ git branch -D [分支]
# 当前所在分支与指定分支合并
$ git merge [分支]
$ git merge dev
# 创建无父依赖的分支
$ git checkout --orphan 分支名
git回退到上一个版本
首先查找版本号:git log
确定恢复到指定版本:git reset --hard f5c706a6,f5c706a6为版本号
强制将本地代码同步到远程仓库:git push origin master --force,master主分支
清空git缓存
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
暂存操作
git stash 存储工作区和缓存区
git stash list 查看之前存储的所有版本列表
git stash pop [stash_id] 恢复具体某一次的版本,如果不指定stash_id,则默认恢复最新的存储进度
git stash apply 将堆栈中的内容应用到当前目录
git stash drop [stash_id] 删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度
git stash clear 清除所有的存储进度
git stash show 查看堆栈中最新保存的stash和当前目录的差异
git stash branch 从最新的stash创建分支
git log
log命令的作用:用于查看git的提交历史
git log -数字 表示查看最近几次的提交
git log -p -2 显示最近两次提交的不同点
git log --author 查看具体某个作者的提交
git log --online 输出简要的信息
git log --graph 以一个简单的线串联起整个提交历史
git log 输出信息的定制
git diff
diff -->difference的缩写,用于比较差异
使用场景:
1、解决冲突
2、制作补丁
git diff 不加任何参数 用于比较当前工作区跟暂存区的差异
git diff --cached 或者--staged
git diff HEAD
git diff 分支名 查看当前分支跟指定的分支的差异
git diff 分支名1 分支名2 查看两个指定分支(已提交的)的差异,分支2 跟分支1的差别
git diff 文件名 查看指定文件的差异
git diff commitid1 commitid2 用于列出两个历史提交的差异
git diff --stat 用于罗列有变更的文件
diff --git a/file2 b/file2 file2的两个版本
index c200906..29e2b3c 100644
--- a/file2 表示变更前的文件
+++ b/file2 表示当前文件
@@ -1 +1,2 @@ 变更前的文件的第一行 变更之后的文件的第一行往下两行 这块文件区域有差异
222
+111 +表示新增了一行 -表示删除了一行 如果对一行内容进行修改,在此处体现出来的就是先删除一行,再新增一行
.gitignore文件
*.log 表示忽略项目中所有以.log结尾的文件
123?.log 表示忽略项目中所有以123加任意字符的文件
/error.log 表示忽略项目中根目录中的error.log 这个文件
src/main/test/* 表示忽略/src/main/test/目录下的所有文件
*.class
**/java/ 匹配所有java目录下的所有文件
!/error.log 表示在之前的匹配规则下,被命中的文件,可以使用!对前面的规则进行否定
对于已经提交到远程或本地仓库的文件,.gitignore配置之后不会生效。我们必须先删除本地暂存区里的文件,之后在加上.gitignore 文件,最后再把变更提交到远程仓库上。
git rm --cached 文件名 从暂存区删除某个文件
git rm -rf --cached 文件夹 表示递归删除暂存区该文件夹的所有东西
冲突与解决
master分离出dev分支,对a文件修改后提交,之后跑到master分支,也对a修改后提交,之后merge dev分支,此时冲突产生
git diff --name-only --diff-filter=U 查看冲突的文件
git ls-files -u 也可以显示没被合并的文件
之后使用vim对文件进行修改或者直接用开发工具进行修改