

Git安装与GitHub的关联,见文章:快速掌握Git和GitHub的基本使用
本文介绍一些 Git 相关命令。
一、Git 配置相关
如果你首次使用 Git,那刚开始首先是需要配置各种身份信息的,这样当你提交相关任务的时候,别人才能知道这个 commit 是谁提交的。
1、Git本地最小配置
(1)配置全局账户,也就是该账户对所有的 Git 仓库都有效
git config --global user.name '你的账户名称'
git config --global user.email '你的 Email'
(2)配置局部账户,也就是该账户只对当前 Git 仓库有效
git config --local user.name '你的账户名称'
git config --local user.email '你的 Email'
注意,不同点就是一个参数是 global(全局),一个是 local(本地),在一特定仓库中,local配置优先级高于global
(3)创建本地仓库(初始化),会在当前文件下创建隐藏文件.git
git init
2、查看相关配置情况
配置了之后,显然有时候是需要查看我们当前配置的相关情况的,可以使用如下命令
(1)查看 global 类型的配置情况
git config --global --list
(2)查看某个仓库下的配置情况
git config --local --list
二、本地基本操作
1、文件操作
(1)把文件添加到暂存区
git add 文件1 文件2 ... 文件n //添加指定文件
git add . //把当前目录及其子目录下所有变更都加入到暂存区
git add -A //把仓库内所有变更都添加到暂存区
git add -u //把git已经跟踪的发生的更新文件添加到暂存区(update)
(2)创建正式的 commit,也就是把当前的数据提交到本地仓库
git commit -m 'description'
(3)提交到远程仓库(master分支)
git push -u origin master
(4)查看状态变更情况
git status
(5)撤销对文件的修改(此时文件未添加到暂存区)
git checkout -- 文件名称 //注意--必须要有
(6)删除文件
rm 文件名称 //删除本地文件,然后再commit掉,再commit之前,可以使用
//git checkout -- 文件名 恢复文件
git rm 文件名称 //删除git仓库文件
(7)变更文件名
git mv 原文件名称 新文件名称
(8)利用哈希值查看文件
git cat-file -t 哈希值 //查看此哈希值对应为什么类型文件
git cat-file -p 哈希值 //查看内容
2、比较差异
(1)比较某文件工作区和暂存区的差异
git diff 某文件
(2)比较某文件暂存区和 HEAD 的差异
git diff --cache 某文件
(3)比较工作区和暂存区的所有差异
git diff
(4)比较暂存区和 HEAD 的所有差异
git diff --cache
3、版本回退
(1)把工作区指定文件恢复成和暂存区一样
git checkout 文件1 文件2 ... 文件n
(2)把暂存区指定文件恢复和 HEAD 一样
git reset 文件1 文件2 ... 文件n
(3)把暂存区和工作区所有文件恢复成和 HEAD 一样
git reset --hard
(4)当前版本回退到上一个版本
git reset --hard HEAD^
(5)当前版本回退到前第100个版本
git reset --hard HEAD~100
(6)回退到指定版本号版本
git reflog //获取提交描述以及版本号
git reset --hard 版本号
(7)用 difftool 比较任意两个 commit 的差异
git difftool commit1 commit2
4、其他
查看哪些文件没有被 Git 管控
git ls-files --others
三、远程仓库的操作
1、列出所有 remote仓库
git remote -v //verbose冗长的信息
3、从远程仓库克隆到本地并建库
git clone 项目网址
3、增加 remote仓库
git remote add origin 远程仓库的url地址
4、删除 remote
git remote remove origin
git remote rm origin
5、改变 remote 的name
git remote rename 旧名称 新名称
6、把远端所有分支和标签的变更都拉到本地
git fetch remote
7、把远端分支的变更拉到本地,且 merge 到本地分支
git pull remote名称 分支名
8、把本地分支 push 到远端
git push remote名称 分支名
git push -u remote名称 分支名
9、删除远端分支
git push remote --delete 远端分支名
或者
git push remote:远端分支名
10、向远端提交指定标签
git push remote 标签名
11、向远端提交所有标签
git push remote --tags
四、分支与标签
1、创建新分支
1)基于当前分支创建新分支
git branch 新分支名称
2)基于指定分支创建新分支
git branch 新分支名称 已有分支名称
3)基于某个 commit 创建分支
git branch 新分支名称 某个 commit 的id
4)创建分支并且切换到该分支
git chechout -b 新分支 //创建并切换
||
git branch 新分支名称 //创建
git checkout 新分支名称 //切换
2、列出分支
1)查看所有分支,当前分支前有*号标识
git branch
git branch -v
2)列出本地和远端分支
git branch -av
3)列出远端所有分支
git branch -rv
4)列出名称符号某样式的远端分支
git branch -rv -l '某样式'
5)强制转换分支到指定提交版本
git branch -f 分支 目标提交的哈希值
3、分支合并
1)把 A 分支合入到当前分支,且为 merge 创建 commit
git merge A分支
2)把 A 分支合入到 B 分支,且为 Merge 创建 commit
git merge A分支 B分支 //A→B
3)把当前分支基于B分支做 rebase,以便把B分支合入到当前分支
git rebase B分支 //当前分支加入到B分支
4)把A分支基于B分支做rebase,以便把B分支合入到A分支
git rebase B分支 A分支 //A→B
5)用 mergetool 解决冲突
git mergetool
6)分支管理策略。
通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。
git merge --no-ff -m 'description' 分支名称
分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
4、删除分支
1)安全删除本地某分支
git branch -d 要删除的分支名称
2)强行删除本地分支
git branch -D 要删除的分支名称
3)删除已合并到 master 分支的所有本地分支
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d
4)删除远端 origin 已不存在的所有本地分支
git remote prune origin
5、bug分支/加塞临时任务处理
在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。
比如在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交,并且工作进行到一半的时候,我们还无法提交。怎么办呢?还好,Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作。
1)把未处理完的变更现场隐藏起来
git stash //将当前的工作现场隐藏起来
2)查看所有的 stash
git stash list
3)取回某次 stash 的变更
git stash pop stash @{数字n}
4)创建处理临时任务分支
git checkout -b issue-404 //在master分支上创建bug分支,消灭bug
git merge --no-ff -m 'description' issue-404 //合并bug分支
git branch -d issue-404 //删除bug分支
5)返回未处理完的分支继续当前工作
git checkout dev //切换到dev分支,然后可使用git stash list查看隐藏内容
git stash pop //pop 相当于栈的出栈和入栈一样,把之前的任务弹出来,恢复的同时把stash内容也删除了。
或者
git stash apply //和 pop 不同的是, apply 相当于从栈顶把任务取出来,但是不把栈中的任务移除,需要使用命令git stash drop来删除。
6、修改个人分支历史
我们的仓库的内容每次变更执行 commit 的时候,都会生成一个新的 commit,不过有时候,我们不想产生新的 commit,而是想要通过修改之前的 commit 来变更仓库的内容,那么就可以使用如下命令了
1、修改最后一次 commit
1、在工作区中修改文件
2、git add
3、git commit --amend
2、修改中间的 commit(假设代号为 X)
1. git rebase -i X前面的一个commit的id
2. 在工作区修改文件
3. git add
4. git rebase --contiue
7、打标签
git tag 标签名 commit的id //从 commit 打上标签
五、查看变更日志(常用参数)
1)查看当前分支的变更日志
git log
2)查看所有分支的变更日志信息
git log --all
3)查看具体文件的变更日志
git log 某文件
4)用一行显示当前分支变更日志
git log --online
5)显示最近的 n 个日志变更信息
git log -n数字
6)用图示显示所有的分支历史
git log --oneline --graph --all
7)用图示单行缩写显示所有历史
git log --graph --pretty=oneline --abbrev-commit
8)某文件各行最后修改对应的 commit 以及作者
git blame 某文件
9)查看详细git log参数
git help --web log
10)用图形界面查看版本历史
gitk
这么多命令其实谁都不可能全部记住,只有经常使用这些命令,才能熟能生巧。。。


?
synchronized锁??
?创建线程的方式
?五分钟掌握Java注解
✨喜欢的老铁点个关注吧✨

不要忘记点击在看哦
276

被折叠的 条评论
为什么被折叠?



