git

1.创建分支

git branch dev

2.查看本地分支:

git branch
注:名称前面加* 号的是当前的分支

3.查看远程分支:

加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话)

git branch -a

4.切换分支

git checkout branch_name

5.删除本地分支

git branch -d branch_name

6.删除远程分支

git branch -r -d origin/branch-name
git push origin :branch-name

7.如果远程新建了一个分支,本地没有该分支。

可以利用 git checkout --track origin/branch_name ,这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name。

git checkout --track origin/branch_name

8.如果本地新建了一个分支 branch_name,但是在远程没有。

这时候 push 和 pull 指令就无法确定该跟踪谁,一般来说我们都会使其跟踪远程同名分支,所以可以利用 git push --set-upstream origin branch_name ,这样就可以自动在远程创建一个 branch_name 分支,然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步。

git push --set-upstream origin branch_name

9.合并分支到master上

首先切换到master分支上

git checkout master
如果是多人开发的话 需要把远程master上的代码pull下来

git pull origin master
然后我们把dev分支的代码合并到master上

git merge dev
然后查看状态

git status

10. git stash暂存以及复原当前工作环境

我们经常遇到紧急的任务,这个时候你必须得放弃现在正在修改的代码,转而切换到其他分支进行工作,但是当前的代码还没有调试成功,无法进行git push所以这个时候我们需要进行本地的暂存,当我们紧急任务完成之后,在还原当前的工作环境。

首先直接使用git stash命令进行保存环境

git stash

或者

git stash save “修改的信息"

 其次我们会进行git checkout 或者 git switch 切换到其他分支工作,

使用完成之后我们进行查看我们的暂存区列表。

gitstash list

 

 

然后你可以选择一个你需要的版本进行复原,其中{0}为暂存列表的编号选择

git stash apply stash@{0}

 此外我们还可以删除一些旧的缓存记录

git stash dropstash@{0} 这是删除第一条

使用git list就可以查看到删除后的缓存列表

 git stash clear :注意这是清空你所有的内容

 11. 使用 git mergetool 解决合并两个分支时出现的冲突  https://zhuanlan.zhihu.com/p/462532910

 在解决合并冲突之前,我们应该设置 Git 使用的 diff 工具,如下所示。

$ git config merge.tool meld
$ git config merge.conflictstyle diff3
$ git config mergetool.prompt false

    window:

$ git config merge.tool meld
$ git config merge.conflictstyle diff3
$ git config mergetool.prompt false
$ git config mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"

上面的命令将 meld 设置为默认的 diff 工具。此外,我们已将 conflictstyle 设置为 diff3;这将 diff 工具设置为显示两个文件的共同祖先(当前分支一和分支中要合并的分支)。

要查看支持的不同差异工具,请运行以下命令。

$ git mergetool --tool-help

 12.git diff用来比较文件之间的不同,其基本用法如下:

(1)git diff:当工作区有改动,临时区为空,diff的对比是“工作区与最后一次commit提交的仓库的共同文件”;当工作区有改动,临时区不为空,diff对比的是“工作区与暂存区的共同文件”。

(2)git diff --cached 或 git diff --staged:显示暂存区(已add但未commit文件)和最后一次commit(HEAD)之间的所有不相同文件的增删改(git diff --cached和git diff –staged相同作用)

(3)git diff HEAD:显示工作目录(已track但未add文件)和暂存区(已add但未commit文件)与最后一次commit之间的的所有不相同文件的增删改。

(3.1)git diff HEAD~X或git diff HEAD^^^…(后面有X个^符号,X为正整数):可以查看最近一次提交的版本与往过去时间线前数X个的版本之间的所有同(3)中定义文件之间的增删改。

(4)git diff <分支名1> <分支名2> :比较两个分支上最后 commit 的内容的差别

(4.1) git diff branch1 branch2 --stat 显示出所有有差异的文件(不详细,没有对比内容)

(4.2) git diff branch1 branch2 显示出所有有差异的文件的详细差异(更详细)

(4.3) git diff branch1 branch2 具体文件路径 显示指定文件的详细差异(对比内容)

我们有2个分支:master、dev(dev为develop的缩写,应是开发新功能的Feature分支),查看这两个 branch 的区别,除了上面(abc)还有以下几种方式:

(4.4) git log dev ^master 查看 dev中log有的commit,而 master中log没有的commit

 (4.5) git log master..dev查看 dev 中的log比 master 中的log多提交了哪些内容(注意,列出来的是两个点“..”后边(此处即dev)多提交的内容)

 

(4.6) git log dev...master 不知道谁提交的多谁提交的少,单纯想知道有什么不一样

 

(4.7) git log --left-right dev...master 在上述情况下,再显示出每个提交是在哪个分支上

 

 注意 commit 后面的箭头,根据我们在 –left-right dev…master 的顺序,左箭头 < 表示是 dev 的,右箭头 > 表示是 master的,截图中表示这三个提交都是在 master 分支上的

 (4.8) Git diff (---和+++具体解释)  https://blog.csdn.net/lovezbs/article/details/46492933 

$ git diff demo.txt
diff --git a/demo.txt b/demo.txt
index 0df0bb6..41c9d5a 100644
--- a/demo.txt      "---"表示变动前的文件,"+++"表示变动后的文件。 
+++ b/demo.txt
@@ -1 +1,2 @@    变动的位置用两个@作为起首和结束
-Init
\ No newline at end of file
+Init
+change by local dev1
\ No newline at end of file

git diff进阶文章1:git diff 和 git diff –cached 和 git diff HEAD~X(X为正数)实际应用中的区别对比

git diff进阶文章2:git diff的对比对象的争议?实际代码测试+详细解释

 

(4.9) Git使用出现Automatic merge failed; fix conflicts and then commit the result.解决方法

产生原因
首先这个问题产生的原因是因为你git pull 的时候会分为两步,第一步先从远程服务器上拉下代码,第二步进行merge,但是merge时候失败了就会产生上述问题。

解决方法:

丢弃本地提交,强制回到线上最新版本
git fetch --all
git reset --hard head 退出Merging 状态
git reset --hard origin/你需要下拉的分支(默认master)
git fetch
保存本地提交
git reset --abort
git reset --merge
git commit -am '提交信息'
git pull
清理临时文件
git clean -f -d

本文参考来源:

[1] https://blog.csdn.net/clxjoseph/article/details/80213315

[2] https://www.cnblogs.com/oxspirt/p/5970101.html

[3] https://blog.csdn.net/AsheAndWine/article/details/78982919

[4] https://blog.csdn.net/whbing1471/article/details/52065448

[5] https://www.jianshu.com/p/bb97fabb475e

[6] https://blog.csdn.net/qq_37281252/article/details/79064638

[7] https://blog.csdn.net/wq6ylg08/article/details/88798254

 

posted @ 2022-04-09 11:16  CrazyJC  阅读(33)  评论(0编辑  收藏  举报