概述
目录
- 配置
- 1. 查看当前git配置
- 2. 修改用户信息
- 创建仓库
- 1. 本地初始化仓库
- 2. 克隆远程仓库
- 远程仓库
- 1. 查看关联的远程仓库
- 2. 添加远程仓库关联
- 3. 远程仓库的重命名与移除
- 4. 从远程拉取
- 5. 推送到远程
- 分支管理
- 1. 查看分支
- 2. 切换分支
- 3. 创建分支
- 4. 合并分支
- 4.1 合并整个分支
- 4.2 只合并某些提交
- 4.3 只合并某个文件
- 5. 删除分支
- 工作区、暂存区、版本库
- 1. 查看状态
- 2. 添加
- 2.1 添加到暂存区
- 2.2 添加到本地版本库
- 3. 撤销
- 3.1 撤销工作区修改
- 3.2 撤销暂存区修改
- 3.3 撤销版本库修改
- 贮藏/储存
- 1. 查看所有栈储存列表
- 2. 添加储存
- 3. 取出储存
- 4. 删除储存
- 5. 清空储存
- 日志
- 1. 查看当前分支所有提交记录
- 2. 查看当前仓库的所有操作记录
- 2.1 恢复删除的分支
- 2.2 恢复删除的提交
记录一些我经常用到的git命令,等以后学到新命令后再来补充。
再附上git官方文档:git命令文档
配置
1. 查看当前git配置
git config --list
2. 修改用户信息
- 修改用户名
git config --global user.name "userName"
- 修改邮箱地址
git config --global user.emal "emal address"
--global:全局配置。如果没有这个参数则只针对当前仓库有效
创建仓库
1. 本地初始化仓库
尚未进行版本控制的本地目录转换为 Git 仓库
git init <directory>
<directory>:本地目录地址。如果没有这个参数则在当前目录初始化,有这个参数则找到这个目录(没找到则新建目录)并初始化。
2. 克隆远程仓库
已有远程仓库,只需要克隆到本地
git clone <url> <directory>
<url>:是你要拷贝的远程仓库地址。通常远程仓库都有http和ssh两种形式的地址,要注意使用ssh地址前需要配置个人的ssh key。
此命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或其它名字的默认分支)。
远程仓库
1. 查看关联的远程仓库
- 查看所有的远程仓库
git remote -v
- 查看某一个远程仓库
git remote show <remote>
<remote>:本地仓库为对应的远程仓库设置的简称,一般是 origin ,也可以根据需求进行修改。
如果远程仓库不只一个,-v 命令会将他们全部列出。show 命令只会列出当前查看的远程仓库的 URL 与跟踪分支的信息。
每个远程仓库会有一个 fetch 和 push地址,同一个远程仓库这两个地址应该是一样的。这代表我们有拉取和推送的权限。
2. 添加远程仓库关联
git remote add <shortname> <url>
<url>:远程仓库地址。
3. 远程仓库的重命名与移除
- 重命名远程仓库
git remote rename <old_remote> <new_remote>
- 移除远程仓库
git remote remove <remote>
或git remote rm <remote>
重命名只会修改远程仓库在本地的简称,并不会修改远程仓库的地址。
同样也会修改所有远程跟踪的分支名称。
4. 从远程拉取
- 只拉取内容
git fetch <remote>
或git fetch <remote>
或git fetch <remote> <branch>
- 拉取内容并执行合并
git pull
或git pull <remote> <branch>
如果当前分支设置了跟踪远程分支,那么可以用 git pull 简单自动拉取并合并;
如果未设置跟踪远程分支,那么需要注意是否在错误的分支上执行 git pull,这可能会带来错误的内容。
5. 推送到远程
- 正常的提交推送
git push
或git push <remote> <branch>
- 强制推送
git push -f
或git push <remote> <branch> -f
强制推送会覆盖远程仓库的提交记录,导致远程仓库和本地不一致的修改内容被删除。
如果当前分支设置了跟踪远程分支,那么可以用 git push 简单推送。
分支管理
1. 查看分支
- 查看本地分支
git branch
或git branch --list
- 查看远程分支
git branch -r
- 查看全部分支,本地分支+远程分支
git branch -a
2. 切换分支
git checkout <branch>
3. 创建分支
- 只创建本地分支
git branch <branch>
- 创建本地分支并切换到新分支
git checkout -b <branch>
- 拉取远程仓库分支
git fetch <remote> <branch>
本地分支创建时是以本地当前分支当前 <commit> 为节点,有可能当前<commit>是很老旧的内容,这会导致新分支在合并到别的分支时出现冲突。
所以推荐先拉取远程仓库中生产分支最新的提交,再创建新的分支。
4. 合并分支
4.1 合并整个分支
git merge <branch>
如果遇到有冲突的合并,执行此命令后 Git 做了合并,但是没有自动地创建一个新的合并提交。
Git 会暂停下来,等待你去解决合并产生的冲突。 你可以在合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并状态的文件。
任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来( <<<<<<< , ======= , 和 >>>>>>>)。
在完全解决冲突后,执行 git add,git commit 命令重新提交。
合并前需要先切换到要合并到的分支上执行此命令。
无冲突的合并,会自动创建一个新的合并提交。
有冲突的合并,先解决冲突,再手动增加提交。
4.2 只合并某些提交
- 合并单个提交
git cherry-pick <commit-id>
- 合并多个连续的提交
git cherry-pick <commit-id1>...<commit-id3>
合并前需要先切换到要合并到的分支上执行此命令。
无冲突的合并会根据<commit-id>对应的代码和相关信息,并作为一个全新的提交引入到当前所在的分支上。
因为是全新的提交,所以合并后的分支再和原<commit-id>所在的分支合并时也可能出现冲突。
合并连续提交的时候<commit-id>是并没合并进去的,要先合并<commit-id>才可以。
4.3 只合并某个文件
git checkout --patch <branch> <file>
此命令的本质是拷贝文件,执行命令后会并给出一些命令选项,需要输入一个命令告诉 Git 如何处理这个文件。
合并前需要先切换到要合并到的分支上执行此命令。
如果不加上分支名,默认则是当前分支,那么就没有改变。
确认后的文件是已经在暂存区的状态,需要根据情况手动修改文件内容或增加提交。
执行此命令后出现的命令选项在此处不列出,有需要的可自行去官方文档查询。
5. 删除分支
- 安全删除本地分支
git branch --delete <branch>
或git branch -d <branch>
- 强制删除本地分支
git branch --delete --force <branch>
或git branch -d -f <branch>
或git branch -D <branch>
- 删除远程分支
git push --delete <remote> <branch>
删除本地分支时,先切换到其他存在的分支,再执行命令。
安全删除分支:当分支中含有未合并的变更时,Git会阻止这一次删除操作。
强制删除分支:即便其中含有未合并的变更,也要删除。
工作区、暂存区、版本库
1. 查看状态
- 完整状态输出
git status
- 缩短状态的输出
git status --short
或git stauts -s
可以查看当前分支所有有修改内容的文件状态。
工作区 未跟踪 的文件和 已跟踪 的文件,及暂存区文件会分开显示,并提示相应的操作命令。
2. 添加
2.1 添加到暂存区
- 添加全部文件
git add .
- 添加部分文件
git add <files>
<files>:有修改的文件或目录的的路径。
工作区 未跟踪 的文件添加后,Git 开始跟踪这个新文件,并添加到暂存区。
2.2 添加到本地版本库
- 提交修改文件,并启动你选择的文本编辑器来输入提交说明
git commit
- 提交修改文件,将提交说明与命令放在同一行
git commit -m '提交说明'
- 跳过暂存区提交修改文件
git commit -a
或git commit -a -m '提交说明'
在跳过暂存区提交命令中,不会提交 未跟踪 的文件。
3. 撤销
3.1 撤销工作区修改
git restore <files>
或 git checkout -- <files>
工作区撤销后,修改内容将被彻底删除。
3.2 撤销暂存区修改
git restore --staged <files>
或 git reset -g <files>
暂存区撤销后,修改内容将回到工作区。
<files>:在restore命令中不能缺少;在reset命令中可以缺少,此时会撤销暂存区所有修改文件。
3.3 撤销版本库修改
- 删除提交记录,并且不保留提交文件
git reset --hard HEAD^
或git reset --hard <commit-id>
- 删除提交记录,但保留提交文件
git reset --soft HEAD^
或git reset --soft <commit-id>
- 只修改最后一次提交
git commit --amend
或git commit -m '提交说明' --amend
--soft:让工作目录还跟 reset 之前一样,不作任何改变。即撤销后文件回到暂存区。
HEAD:表示当前 <commit> 指向。^ 符号表示向前移动,HEAD^^^ 表示撤销到前3个 <commit>,等同于 HEAD~3。
<commit-id>:表示具体的<commit>生成的哈希值,即撤销到这个哈希值对应的 <commit>
只修改最后一次提交时,如果不加 -m 提交说明,会启动你选择的文本编辑器来输入提交说明;
如果有遗漏文件,可以先执行 git add 命令,再执行此修改
贮藏/储存
将 工作区 和 暂存区 里 跟踪文件的 未完成的修改内容保存到一个栈上,此时工作区和暂存区会恢复到上一次提交的状态,而保存到栈内的修改可以在任何时候重新应用。
一般使用场景:
1. 本地和远程冲突,但需要先拉取远程新的提交。
2. 在错误的分支上更改内容,需要保存这些修改,再到正确的分支上应用。
3. 临时需要去修改其他分支的内容,需要保存这些修改,等再次回到这个分支可以接着原来的进度修改。
1. 查看所有栈储存列表
git stash list
不同的分支保存在同一个栈里
2. 添加储存
git stash
或 git stash push -m '储存内容名称'
或 git stash save '储存内容名称'
推荐使用 git stash push 命令,因为此命令引入了贮藏选定的 路径规范 的选项。
如果不加 储存内容名称 会以当前 <commit>的提交说明为名称保存到栈里,当有存有多个栈的时候无法区分具体储存内容。
3. 取出储存
- 按出栈顺序取出
git stash pop
- 指定取出栈内某个储存
git stash pop stash@{$num}
无冲突时,取出栈后会自动删除当前储存在栈内的信息,工作区和暂存区回到储存前的内容。
有工作区或暂存区的文件冲突时,取出储存失败
无工作区或暂存区的文件冲突时,取出储存成功,但是不会删除当前储存在栈内的信息,并且有冲突的文件都会以未合并状态标识出来( <<<<<<< , ======= , 和 >>>>>>>)。
4. 删除储存
git stash drop stash@{$num}
一定要指定删除某一个储存
5. 清空储存
git stash clear
日志
1. 查看当前分支所有提交记录
- 按时间顺序显示每次提交的信息
git log
- 按时间顺序显示每次提交的简略统计信息
git log --stat
- 按时间顺序定制记录的显示格式
git log --pretty=format:"%h %an %s %cd" --date=iso
(format
内容:简写哈希,作者名,提交说明,提交时间;date
内容:ISO 标准日期格式) - 筛选指定时间之后的提交
git log --since=日期
或git log --after=日期
- 筛选指定时间之前的提交
git log --until=日期
或git log --before=日期
- 筛选指定作者的提交
git log --author=作者名字
- 筛选指定提交说明的提交
git log --grep=提交说明
只能查看当前分支的提价和合并操作。
顺序是按时间倒序显示,最近的提交排在最上面
<format> 和 <date> 的选项这里不列出,有需要的可以自己去官方文档中查看。
date日期格式可以在Git 配置中修改。
2. 查看当前仓库的所有操作记录
git reflog
能查看初始化、拉取、切换、提交、合并、变基、重置等操作。
顺序是按时间倒序显示,最近的提交排在最上面
2.1 恢复删除的分支
- 执行
git reflog
, 在记录中找到被删除分支的最后一次有效操作的SHA-1值。 - 基于找到的SHA-1值,新建一个分支,分支名和原来相同,即可找回被删除的分支。
git branch <old_branch> <commit-id>
2.2 恢复删除的提交
- 执行
git reflog
在记录中找到被删除的提交的SHA-1值。 - 基于找到的SHA-1值,新建一个分支。
git branch <new_branch> <commit-id>
- 再将新分支合并到原来的分支,即可恢复被删除的分支。
git merge <new_branch>
最后
以上就是义气草丛为你收集整理的常用git命令配置创建仓库远程仓库分支管理工作区、暂存区、版本库贮藏/储存日志的全部内容,希望文章能够帮你解决常用git命令配置创建仓库远程仓库分支管理工作区、暂存区、版本库贮藏/储存日志所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复