git 系列
基本
gitignore
A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected; see the NOTES below for details.
常规工作流
自己的分支上:add,commit,push,merge request
遇到问题后:修改,add,commit --amend, push -f, MR会自动更新
查看区别
比较两个commit
git diff commid1 commit2 -- filename
-- 表示commit2相比commit1少了的内容
++ 表示commit2相比commit1多了的内容
比较工作区和commit区别
git diff commitid -- filename
比较两次commit的文件改动
git diff commid1 commit2 | grep "diff --git"
比较commit和工作区的文件改动
git diff commid1 | grep "diff --git"
查看commit 情况
git show commitid
使用cherry-pick拉制定的commit
参考:https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
起因:自己的分支上commit混乱,无法与目标主分支进行merge。
解决方法:将远程的目标主分支pull下来,并co过去,然后使用git cherry-pick ${commitID}
可将自己分支上的commit拉到目标主分支上。再使用checkout -b 新建一个分支,再push到远程,进行merge request
关于rebase
https://www.cnblogs.com/ijpq/p/15871087.html
解决merge conflict
https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344
pull 指定远程分支
git pull origin <远程分支名>:<本地分支名>
或
git pull origin <远程分支名>
撤销rebase
https://blog.csdn.net/chengde6896383/article/details/83418488
关于submodule
https://www.cnblogs.com/ijpq/p/16744699.html
撤销submodule修改
If you want to do this for all submodules, without having to change directories, you can perform
git submodule foreach git reset --hard
You can also use the recursive flag to apply to all submodules:
git submodule foreach --recursive git reset --hard
通过commit和reset来保存代码
https://www.cnblogs.com/ijpq/p/16662087.html
删除本地的分支并重新拉远程分支
一.删除本地分支
我要删除本地分支dev
1.首先切换到本地一个其他的分支,这里我切换到本地master
git checkout master
2.删除本地分支dev
git branch -D dev
二.重新拉取远程分支dev到本地
1.还是在master分支下进行操作,拉取远程分支dev到本地
git fetch origin dev
2.还是在master分支下进行操作,在本地新建dev分支(基于origin/dev创建dev分支)
git checkout -b dev origin/dev
3.切换到本地dev分支,把dev所有内容拉取到本地
git pull origin dev
git lfs
https://www.cnblogs.com/ijpq/p/17024262.html
其他参考
http://marklodato.github.io/visual-git-guide/index-zh-cn.html
本文来自博客园,作者:ijpq,转载请注明原文链接:https://www.cnblogs.com/ijpq/p/16406366.html