您现在的位置是:首页 >技术交流 >Git使用各种情况场景记录网站首页技术交流
Git使用各种情况场景记录
简介Git使用各种情况场景记录
文章目录
- 4、Git使用各种情况场景记录:
- 1、执行 "git fetch" 来获取远程仓库分支最新列表 到 本地仓库分支。
- 3、设置邮箱地址:
- 4、从特定远程分支dev获取:
- 5、上传代码到特定远程分支dev:
- 6、基于远程分支创建新分支:
- 7、删除远程提交,使用 git reset 和 git revert 区别:
- 8、查看本地分支对应的远程分支:
- 10、避免每次都输入账户密码:
- 11、这些是各种场合常见的 Git 命令:
- 12、Git:git取消对某个文件的跟踪
- 14、Git 强制覆盖更新:
- 16、git 中 rebase 和 merge 区别 :
- 17、git pull 和 git pull --rebase 区别:
- 18、git 中 重置(reset) 和 回滚(revert) 区别:
- 19、git cherry-pick 的作用:
- 23、比较分支:
- 24、git 本地分支 改名:
- 25、git 受保护分支是什么意思?查看 git 分支 是否是受保护分支?
4、Git使用各种情况场景记录:
1、执行 “git fetch” 来获取远程仓库分支最新列表 到 本地仓库分支。
git fetch 不会更新本地代码文件,它只会把远程仓库中最新的版本同步到本地仓库中,但不会覆盖本地仓库中的文件。
git fetch
3、设置邮箱地址:
git config --global user.email "xxxxxxxxx"
git config --global user.name "xxxxxxx"
4、从特定远程分支dev获取:
git pull origin dev
5、上传代码到特定远程分支dev:
git push --set-upstream origin dev
git push origin [branch name]:[branch name] 或者
git push origin [branch name]
6、基于远程分支创建新分支:
1、git checkout -b new origin/new //基于远程分支new创建一个叫new的本地分支并切换到new分支,需要用下面两个命令之一推送分支到远程仓库。 //(推荐)
git push --set-upstream origin new 将新创建的new本地分支推送到远程,不然提交记录会提交到基于远程的那个分支上!!!
或:
git push -u origin new 将新创建的new本地分支推送到远程,不然提交记录会提交到基于远程的那个分支上!!!
2、git checkout -b new --track origin/new //基于远程分支new创建一个叫new的分支并切换到new分支 //(推荐)
3、git pull origin new:new //基于远程分支new创建一个叫new的本地分支,不关联远程分支 //(可以用,但是不推荐)
4、git branch new origin/new //基于远程分支 new 创建一个叫 new 的本地分支,并关联到远程分支 new,但是不切换到本地分支 new
5、git branch new --track origin/new //基于远程分支 new 创建一个叫 new 的本地分支,并关联到远程分支 new,但是不切换到本地分支 new
6、基于 本地分支 创建 本地分支:
1、git checkout -b new //基于 当前分支 创建 本地分支 new 并切换到new分支
2、git branch new //基于 当前所在本地分支 创建 本地分支 new,不关联远程分支
7、删除远程提交,使用 git reset 和 git revert 区别:
1、方法 1 git reset:
1、git reset 命令分为两种: git reset –-soft 与 git reset –-hard ,区别是:
–-soft 表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。
–-hard 直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。
2、方法 1:
git reset --hard commit
git push origin master -f
2、方法 2 git revert:
1、方法 2:
需要删除本地commit,并同步到服务器,使用git revert可以删除某一次提交,并为本次删除生成一个新的提交。也就是说不是把之前的提交记录抹去,在提交记录中还是能看到之前的提交,并且有一个新的revert提交,把之前的提交取消掉。
git revert <commitId>
git push origin master
3、两个方法两者差别:
reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
8、查看本地分支对应的远程分支:
git branch -vv 查看本地所有分支对应的远程分支
git status 查看本地当前分支对应的远程分支
10、避免每次都输入账户密码:
1、先cd到git的根目录(有 .git文件夹存在的目录),执行 git config --global credential.helper store 命令
执行之后会在家目录 ~/.gitconfig 文件中多加红色字体项
[user]
name = kn****
email = ************.com
[credential]
helper = store
2、cd到项目目录,执行git pull命令,会提示输入账号密码。输完这一次以后就不再需要,并且会在家目录生成一个 ~/.git-credentials 文件。内容如下:
xxxxxxxxxxxxxxxxxxx
git config --global user.email "xxxxxxxxxxxxx、"
git config --global user.name "xxxxxxxxxxxxxx"
11、这些是各种场合常见的 Git 命令:
开始一个工作区(参见:git help tutorial)
clone 克隆仓库到一个新目录
init 创建一个空的 Git 仓库或重新初始化一个已存在的仓库
在当前变更上工作(参见:git help everyday)
add 添加文件内容至索引
mv 移动或重命名一个文件、目录或符号链接
restore 恢复工作区文件
rm 从工作区和索引中删除文件
sparse-checkout 初始化及修改稀疏检出
检查历史和状态(参见:git help revisions)
bisect 通过二分查找定位引入 bug 的提交
diff 显示提交之间、提交和工作区之间等的差异
grep 输出和模式匹配的行
log 显示提交日志
show 显示各种类型的对象
status 显示工作区状态
扩展、标记和调校您的历史记录:
branch 列出、创建或删除分支
commit 记录变更到仓库
merge 合并两个或更多开发历史
rebase 在另一个分支上重新应用提交
reset 重置当前 HEAD 到指定状态
switch 切换分支
tag 创建、列出、删除或校验一个 GPG 签名的标签对象
协同(参见:git help workflows)
fetch 从另外一个仓库下载对象和引用
pull 获取并整合另外的仓库或一个本地分支
push 更新远程引用和相关的对象
Existing branch name, tag, or commit SHA
12、Git:git取消对某个文件的跟踪
1、通过修改.gitignore忽视某个文件但是发现这个文件还是会被踪,只对没有被git commit 过的文件有效,也就是说如果你的文件被commit过后你再修改gitignore,这个时候gitignore对这个文件是无效的,这个时候就需要取消对某个文件的跟踪。
2、取消对某个文件的跟踪步骤:
1、git rm -r -n --cached 文件或目录,列出你需要取消跟踪的文件,可以查看列表,检查下是否有误操作导致一些不应该被取消的文件取消了,是为了再次确认的。-r 表示递归,-n 表示先不删除,只是列出文件。
git rm -r -n --cached 文件或目录
2、git rm -r --cached 文件,取消缓存不想要跟踪的文件。
git rm -r --cached 文件
3、修改根目录.gitignore 文件,添加你希望忽略的文件/目录。
14、Git 强制覆盖更新:
1、本地 强制上传覆盖掉 远程仓库:
提交错了或不想要这个提交,本地强制上传覆盖掉远程仓库。
方法 1:
git config --local --list // 查看本地仓库配置
// 如果有本地与远程关联,保留(多仓库关联)或/不保留,看实际需要
git remote remove origin // 此处我选择不保留,即单仓库关联
git remote add origin XXX.git // 添加本地仓库与远程仓库关联
git push -f --set-upstream origin master:master // 强制推送到远程仓库,且覆盖远程代码库
方法 2:
git push -f 远程仓库名 远程仓库分支
git push -f origin master //强制上传覆盖远程仓库
2、远程 强制更新覆盖掉 本地仓库:
git fetch --all //拉取所有更新,不同步;
git reset --hard origin/master //master 本地代码同步线上master最新版本(会覆盖本地所有与远程仓库上同名的文件);
git pull //再更新一次(其实也可以不用,第二步命令做过了其实)
16、git 中 rebase 和 merge 区别 :
1、git log的区别:
merge 命令会保留merge的分支的commit历史记录。
rebase 不会保留分支的历史记录。更加干净。
2、处理冲突的方式:
merge:
原理:如果合并的时候遇到冲突,仅需要修改后重新commit,解决冲突后将自动创建一个新的commit。
注意:只有在冲突的时候,解决完冲突才会自动产生一个commit。
如果想在没有冲突的情况下也自动生成一个commit,记录此次合并就可以用:git merge --no-ff命令。
如果不加 --no-ff 则被合并的分支之前的commit都会被抹去,只会保留一个解决冲突后的 merge commi。
优点:合并保留了分支的完整历史记录,包括按时间顺序排列,记录了真实的commit情况,包括每个分支的详情。
缺点:因为每次merge会自动产生一个merge commit,所以在使用一些git 的GUI tools,特别是commit比较频繁时,看到分支很杂乱。
rebase:
会合并之前的commit历史。(交互式)使用rebase命令合并分支,解决完冲突,不会产生额外的commit。
优点:得到更简洁的项目历史,去掉了merge commit。分支上不会有无意义的解决分支的commit;
缺点:如果合并的分支中存在多个commit,需要重复处理多次冲突。如果合并出现代码问题不容易定位,因为re-write了history。
17、git pull 和 git pull --rebase 区别:
git pull:做了两个操作分别是‘获取’和合并。
git pull rebase 就是以rebase的方式进行合并分支,默认为merge。
18、git 中 重置(reset) 和 回滚(revert) 区别:
git reset --hard commit_id
重置(reset):
是将HEAD指针指向指定的提交。
git revert --
回滚(revert):
是将指定的提交记录回退到某个历史版本。
19、git cherry-pick 的作用:
1、功能:
cherry-pick 是一种把某一次提交单独拿出来,应用到当前分支上的功能。
git cherry-pick是本地特性,本地要有这个commit才可以被git cherry-pick。
2、使用场景:
主要是当某一次提交中有某些修改很重要时,但是又不想把之前的所有提交都应用到当前分支上时可以使用它。
3、使用方法:
1、命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最近的最新一次提交,转移到当前分支。
$ git cherry-pick feature分支
2、也支持一次转移多个提交。
$ git cherry-pick <HashA> <HashB>
23、比较分支:
1、比较两个分支的差异:
git diff branch1..branch2
其中,branch1和branch2是要比较的两个分支的名称。该命令将显示两个分支之间的所有不同之处。
2、比较当前分支和另一个分支的差异:
git diff HEAD..other_branch
其中,other_branch是要比较的另一个分支的名称。该命令将显示当前分支和另一个分支之间的所有不同之处。
3、比较两个分支的提交历史:
git log branch1..branch2
该命令将显示两个分支之间的所有提交历史,并显示哪些提交只存在于其中一个分支中。
4、比较两个分支的提交数:
git rev-list --count branch1..branch2
该命令将显示两个分支之间的提交数。
24、git 本地分支 改名:
git branch -m new_01 new //本地分只 new_01 改名为 new
25、git 受保护分支是什么意思?查看 git 分支 是否是受保护分支?
1、Git分支受保护意味着该分支的更改权限受到限制,只有特定的用户或团队才能进行更改。这通常用于保护重要的代码分支,防止误操作或不当更改。
2、在 gitee 或 git 上查看,分支后面是否显示 受保护 标识,有的就是不能上传。没有就是可以直接上传 push 。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。