Git基本操作手册
Git相关命令极其丰富多样,可以实现很多独特的操作,希望大家习惯查阅相关资料学习使用,或者在遇到问题时,及时学习充电,本文将持续更新Git的使用参考,全文涉及命令及操作方案只做基本学习工作使用,仅供参考,欢迎大家及时补充,一起进步://~

-
克隆一个项目
比如现在我们有一个仓库地址为:clone_url
,该仓库存在一个远程分支:dev
- 克隆完整仓库
git clone [clone_url]
- 只克隆dev分支
git clone -b dev [clone_url]
-
分支基本操作
// 查看分支
git branch
// 查看分支详情
git branch -v
// 创建一个分支
git branch [branch_name]
// 切换到一个分支
git checkout [branch_name]
// 创建并切换到一个新分支
git checkout -b [branch_name]
// 删除一个干净的分支,即相对当前分支而言该分支没有新的提交记录
git branch -d [branch_name]
// 强制删除一个分支,该分支有没有合并到当前分支的提交记录
git branch -D [branch_name]
// 重命名分支
git branch -m [branch_name] [new_branch_name]
// 分支恢复,对于已经有提交记录的分支删除后,实际上只是删除指针,commit记录还保留,如果想恢复,需要使用git reflog查找该分支指向的commitId,然后根据commitId创建新的分支
git branch [branch_name] [commit_id]
// 分支合并,将A分支合并到B分支,此时合并为fast-forward方式,当出现冲突时,应当先解决冲突,然后再暂存,提交
git checkout B & git merge A
// 合并分支时禁用Fast forward模式
git merge --no-ff -m "msg" [branch_name]
-
远程分支操作
// 把本地分支推送到远程
git push origin [本地分支名]:[远程分支名]
// 删除远程分支
git push origin :[远程分支名]
// 从远程的分支获取最新的版本到本地
// 首先从远程的origin的master主分支下载最新的版本到origin/master分支上
git fetch origin master:tmp
// 然后比较本地的master分支和origin/master分支的差别
git diff tmp
// 最后进行合并
git merge tmp
// 从远程获取最新版本并merge到本地
git pull origin master
注意:在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。
-
撤销操作
- 文件未提交到暂存区的时候,撤销文件改动
git checkout -- [filename]
- 文件提交到了暂存区,但是未提交到版本库,撤销文件改动
git reset HEAD [filename]
这个时候,暂存区的文件撤销了,但是工作区的文件还未撤销,所以继续执行以下命令:
git checkout -- [filename]
此时工作区的该文件已经撤销
-
删除工作区的文件
只删除工作区的文件,可以用rm
命令来实现:
rm [filename]
-
删除暂存区的文件
如果该文件提交到了暂存区,我们执行rm
命令只能删除工作区的文件,要是想要继续删除暂存区的文件,可以使用以下命令来实现:
git rm [filename]
- 同时删除暂存区和工作区的文件
git rm -f [filename]
- 删除暂存区文件,不删除工作区文件
git rm --cached [filename]
- 恢复某个文件到某个版本时的状态
git checkout [commit_id] [filename]
- 将所有文件都恢复到某个版本
git reset --hard [commit_id]
// 恢复到上一个版本
git reset --hard HEAD^
// 恢复到前两个版本
git reset --hard HEAD~2
- 查看版本记录
git log
// 查看恢复记录
git reflog
-
对比两个分支的差异
比如我们有两个分支:master
、dev
,现在要查看这两个分支的区别,有以下几种查看方式:
- 查看 dev 有,而 master 没有的:
git log dev ^master
- 查看 dev 中比 master 中多提交了哪些内容:
git log master..dev
- 不知道谁提交的多谁提交的少,单纯想知道有什么不一样:
git log dev...master
- 在上述情况下,再显示出每个提交是在哪个分支上:
git log --right--left dev...master
注意 commit 后面的箭头,根据我们在 –left-right dev…master 的顺序,左箭头 < 表示是 dev 的,右箭头 > 表示是 master的。
-
对比两个文件的差异
分两个分支和相同分支之间的文件差异对比:
-
两个分支之间的文件差异对比
比如我们有两个分支:master
、dev
,其中存在文件application-dev.properties
:
git diff master dev -- application-dev.properties
or
git diff master dev
注意:该命令是以master分支为参照,比较dev分支中的文件差异,默认比较所有差异的文件,可加上需要对比的文件名。
- 比较工作区和版本库之间的差异
git diff HEAD -- application-dev.properties
- 比较工作区和暂存区之间的文件差异
git diff
- 比较暂存区和版本库之间的文件差异
git diff --cached
or
git diff --staged
-
配置个人免密推送
git config --global credential.helper store
// 如果只针对当前仓库,则可以去除--global
git config credential.helper store
网友评论