
1、使用idea git
1.1 下载程序

1.2 更新本地程序

1.3 暂存修改

1.4 提交程序

1.5 切换分支

1.6 本地与git仓库对比

1.7 回退指定已修改的文件内容

1.8 查看提交历史

2、使用Git Bash Here
2.1 初始化仓库(git init)
使用您当前目录作为Git仓库,我们只需使它初始化。
- git init
使用我们指定目录作为Git仓库。
- git init newrepo
初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
例:
用 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。
在目录中执行 git init,就可以创建一个 Git 仓库了。比如我们创建 javaee 项目:
$ mkdir javaee
$ cd javaee
$ git init
Initialized empty Git repository in /www/javaee/.git/
# 在 /www/javaee/.git/ 目录初始化空 Git 仓库完毕。
2.2 添加文件到暂存区(git add)
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
$ git add *.c
$ git add README
添加多个文件:
$ git add README hello.php
2.3 将暂存取内容添加到仓库中(git commit)
$ git commit -m ‘initial project version’
git commit -m “这是注释” 执行后修改commit提交的注释内容
如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。命令格式如下:
git commit -a
如:
$ git commit -am ‘changes to hello file’
[master 78b2670] changes to hello file
1 files changed, 2 insertions(+), 1 deletions(-)
2.4 拷贝一份远程仓库(git clone)
拷贝仓库的命令格式为:
git clone [url]
拷贝一份远程仓库,也就是下载一个项目。
例:
$ git clone git://github.com/schacon/grit.git
执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。
如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit
2.5 创建目录(mkdir)
在当前位置创建目录javaee:
$ mkdir javaee
2.6 创建文件(touch)
在当前目录下创建文件:
$ touch README
$ touch hello.php
2.7 查看仓库当前的状态
git status:查看仓库当前的状态,显示有变更的文件,以查看在你上次提交之后是否有修改。
$ git status -s
A README
A hello.php
执行 git status,就可以看到这两个文件已经加上去了。
例:
现在我们改个文件,再执行一下 git status:
$ vim README
$ git status -s
AM README
A hello.php
“AM” 状态的意思是,这个文件在我们将它添加到缓存之后又有改动。改动后我们在执行 git add 命令将其添加到缓存中:
$ git add .
$ git status -s
A README
A hello.php
如上演示该命令的时候加了 -s 参数,以获得简短的结果输出。如果没加该参数会详细输出内容。
标志说明:
A: 你本地新增的文件(服务器上没有).
C: 文件的一个新拷贝.
D: 你本地删除的文件(服务器上还在).
M: 文件的内容或者mode被修改了.
R: 文件名被修改了。
T: 文件的类型被修改了。
U: 文件没有被合并(你需要完成合并才能进行提交)。
X: 未知状态(很可能是遇到git的bug了,你可以向git提交bug report)。
2.8 显示以写入缓存与已修改但未写入缓存的改动的区别(git diff)
- 执行 git diff 来查看执行 git status 的结果的详细信息。
- git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff —cached
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff —stat
2.9 取消缓存的内容(git reset HEAD)
git reset HEAD 命令用于取消缓存已缓存的内容。
这里我们有两个最近提交之后又有所改动的文件。我们将两个都缓存,并取消缓存其中一个。
$ git status -s
M README
M hello.php
$ git add .
$ git status -s
M README
M hello.pp
$ git reset HEAD — hello.php
Unstaged changes after reset:
M hello.php
$ git status -s
M README
M hello.php
现在你执行 git commit 将只记录 README 文件的改动,并不含现在并不在缓存中的 hello.rb。
2.10 将文件从缓存区中移除(git rm)
git rm 将文件从缓存区中移除。
如我们删除 hello.php文件:
$ git rm hello.php
rm ‘hello.php’
$ ls
README
默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。 如果要在工作目录中留着该文件,可以使用命令:
git rm —cached
2.11 分支管理
2.11.1 列出分支(git branch)
git branch
2.11.2 创建分支(git branch branchname)
git branch branchname
2.11.3 切换分支(git checkout branchname)
--切换分支命令:
git checkout branchname
--创建新分支并立即切换到该分支下:
git checkout -b branchname
2.11.4 合并分支(git merge)
将master分支内容合并到dev分支:
git checkout dev —切换到你所在分支dev
git merge master
2.11.5 删除分支(git branch -d branchname)
将master分支内容合并到dev分支:
git checkout dev—切换到你所在分支dev
git merge master
2.11.6 查看当前分支历史提交记录(git log)
查看当前分支历史提交记录:
git log
查看当前分支历史提交记录简介版:
git log —oneline
-——————————————Git命令集————————————————-
3、Git命令集
git init # 初始化本地git仓库(创建新仓库)
git config —global user.name “xxx” # 配置用户名
git config —global user.email “xxx@xxx.com” # 配置邮件
git config —global color.ui true # git status等命令自动着色
git config —global color.status auto # 用于全局配置 Git 的状态输出的颜色。
git config —global color.diff auto # 用于全局配置Git的git diff命令的输出颜色。
git config —global color.branch auto # 用于全局配置 Git 分支相关输出的颜色显示。
git config —global color.interactive auto # 用于在交互式命令行模式下为 Git 的交互式显示(如合并冲突时的 diff 工具、交互式 rebase 等)配置颜色显示。
git config —global —unset http.proxy # remove proxy configuration on git 用于移除全局 Git 配置中的 HTTP 代理设置。
git clone git+ssh://git@192.168.53.168/VT.git # clone远程仓库
git status # 查看当前版本状态(是否修改)
git add xyz # 添加xyz文件至index
git add . # 增加当前子目录下所有更改过的文件至index
git commit -m ‘xxx’ # 提交
git commit —amend -m ‘xxx’ # 合并上一次提交(用于反复修改)
git commit -am ‘xxx’ # 将add和commit合为一步
git rm xxx # 删除index中的文件
git rm -r * # 递归删除
git log # 显示提交日志
git log -1 # 显示1行日志 -n为n行
git log -5
git log —stat # 显示提交日志及相关变动文件
git log -p -m # 用于查看提交历史,并显示每个提交的变更内容。
git show dfb02e6e4f2f7b573337763e5c0013802e392818 # 显示某个提交的详细内容
git show dfb02 # 可只用commitid的前几位
git show HEAD # 显示HEAD提交日志
git show HEAD^ # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本
git tag # 显示已存在的tag
git tag -a v2.0 -m ‘xxx’ # 增加v2.0的tag
git show v2.0 # 显示v2.0的日志及详细内容
git log v2.0 # 显示v2.0的日志
git diff # 显示所有未添加至index的变更
git diff —cached # 显示所有已添加index但还未commit的变更
git diff HEAD^ # 比较与上一个版本的差异
git diff HEAD — ./lib # 比较与HEAD版本lib目录的差异
git diff origin/master..master # 比较远程分支master上有本地分支master上没有的
git diff origin/master..master —stat # 只显示差异的文件,不显示具体内容
git remote add origin git+ssh://git@192.168.53.168/VT.git # 用于将一个远程仓库添加为本地仓库的默认远程仓库,并将它命名为 “origin”
git branch # 显示本地分支
git branch —contains 50089 # 显示包含提交50089的分支
git branch -a # 显示所有分支
git branch -r # 显示所有原创分支
git branch —merged # 显示所有已合并到当前分支的分支
git branch —no-merged # 显示所有未合并到当前分支的分支
git branch -m master master_copy # 本地分支改名
git checkout -b master_copy # 从当前分支创建新分支master_copy并检出
git checkout -b master master_copy # 上面的完整版
git checkout features/performance # 检出已存在的features/performance分支
git checkout —track hotfixes/BJVEP933 # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支
git checkout v2.0 # 检出版本v2.0
git checkout -b devel origin/develop # 从远程分支develop创建新本地分支devel并检出
git checkout — README # 检出head版本的README文件(可用于修改错误回退)
git merge origin/master # 合并远程master分支至当前分支
git cherry-pick ff44785404a8e # 合并提交ff44785404a8e的修改
git push origin master # 将当前分支push到远程master分支
git push origin :hotfixes/BJVEP933 # 删除远程仓库的hotfixes/BJVEP933分支
git push —tags # 把所有tag推送到远程仓库
git fetch # 获取所有远程分支(不更新本地分支,另需merge)
git fetch —prune # 获取所有原创分支并清除服务器上已删掉的分支
git pull origin master # 获取远程分支master并merge到当前分支
git mv README README2 # 重命名文件README为README2
git reset —hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退)
git rebase # 它可以在合并分支时改变提交历史,用于整理提交、合并提交或将提交添加到不同的基础上。
git rebase <目标分支> # 这个命令会将当前分支的提交追加到目标分支的末尾,并调整提交历史。
git rebase -i <提交ID> # 命令会打开一个交互式界面,展示你要重新排列的提交历史。你可以对每个提交应用不同的操作来修改提交历史,如合并提交、重新排序提交、编辑提交消息等。
git branch -d hotfixes/BJVEP933 # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -D hotfixes/BJVEP933 # 强制删除分支hotfixes/BJVEP933
git ls-files # 列出git index包含的文件
git show-branch # 图示当前分支历史
git show-branch —all # 图示所有分支历史
git whatchanged # 显示提交历史对应的文件修改
git revert dfb02e6e4f2f7b573337763e5c0013802e392818 # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818
git ls-tree HEAD # 内部命令:显示某个git对象
git rev-parse v2.0 # 内部命令:显示某个ref对于的SHA1 HASH
git reflog # 显示所有提交,包括孤立节点
git show HEAD@{5} # 用于显示指定相对位置的提交详细信息和差异。具体来说,HEAD@{5}表示相对于当前HEAD的第五个提交。它可以表示相对于HEAD的任何位置的提交索引,你也可以使用其他符号(如@{n})来表示相对位置。
# 通过运行git show HEAD@{5}命令,Git 会显示第五个提交的详细信息,包括提交作者、提交日期、提交消息以及与其父提交之间的差异。
git show master@{yesterday} # 显示master分支昨天的状态
git log —pretty=format:’%h %s’ —graph # 图示提交日志
git show HEAD~3 # 用于显示当前提交的父提交中的详细信息和差异。
# 具体来说,HEAD~3表示当前提交的第三个父提交(祖父提交)。如果当前提交只有一个父提交(典型情况下的普通提交),那么HEAD~3将指向父提交的父提交。
# 通过运行git show HEAD~3命令,Git 会显示第三个父提交的详细信息,包括提交作者、提交日期、提交消息以及与其父提交之间的差异。
git show -s —pretty=raw 2be7fcb476 # 用于以原始格式显示指定提交的简要信息。
# 具体来说,命令中的选项及参数含义如下:
# -s选项表示只显示简要信息,不显示提交的差异(diff)。
# —pretty=raw选项指定以原始格式显示信息,包括作者、提交者、提交日期和提交消息。
# 2be7fcb476是一个示例的提交哈希值。你可以将其替换为你想要查看的具体提交的哈希值。
git stash # 暂存当前修改,将所有至为HEAD状态
git stash list # 查看所有暂存
git stash show -p stash@{0} # 参考第一次暂存
git stash apply stash@{0} # 应用第一次暂存
git grep “delete from” # 文件中搜索文本“delete from”
git grep -e ‘#define’ —and -e SORT_DIRENT # 多条件匹配,在 Git 仓库中搜索同时包含#define和SORT_DIRENT的内容,然后输出匹配的结果。
git gc # 用于优化 Git 仓库的存储和性能,它涉及垃圾回收操作,清理无用的对象,并对仓库进行优化
git fsck # git fsck是 Git 的文件系统检查命令,用于检查并修复 Git 仓库中的对象和引用的完整性问题。
