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

posted @ 2022-06-23 18:50  ijpq  阅读(35)  评论(0编辑  收藏  举报