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