一篇搞懂企业中git的使用(个人笔记自用,持续更新)

一、git中文件的状态流转

1、 初始化默认仓库:在文件夹中git init
2、拉取远程仓库:在文件夹中git clone + clone地址
3、git有三种命令:已修改、已暂存、已提交
4、git status可以查看当前git的状态
5、git status -s/-short:查看简单版的状态
5、放入暂存区:git add
(1)git add .
(2)git add *.js
(3)git add src
(4)git add ./index.html
6、提交修改:git commit -m +说明,git commit -am(add+m) + 说明
7、推送更改:git push
8、拉取新代码:git pull
9、忽略文件:.gitignore文件,如果在.gitignore文件中添加了一个已经被git跟踪的文件,则需要使用命令git rm --cached
git add . 和git add *的区别:git add .会把所有untrack的文件都加入暂存区,并且会根据.gitgnore做过滤,git add *会忽略.gitignore把任何文件都加入
一个.gitignore的例子:
*.o
*.a
*.so
_obj
_test
*.[568vq]
[568vq].out
*.cgo1.go
.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.

_testmain.go
*.exe
*.exe~
*.test
*.prof
*.rar
*.zip
*.gz
*.psd
*.bmd
*.cfg
*.pptx
*.log
*.xlsx
*nohup.out
*settings.pyc
*.sublime-project
*.sublime-workspace
!.gitkeep
.DS_Store
/.idea
/.vscode
/output
*.local.yml
kx.yml
/log
/_rpc_idl
/_idl_gen


二、git分支为何会如此高效和快速

10、 ☆工作流程:
(1)你在开发项目,有了一个新的需求,需要自己去创建一个分支,并在这个分支中去开发
(2)这时,突然接到通知说线上有一个很严重的问题需要立即修复,这时将经理一下流程:
①根据自己的commitid或者分支名切换到线上版本对应的分支
②为这个问题新建一个分支,并在新分支中修复问题
③通过测试后,切回线上版本对应分支,然后合并这个修复问题的分支并把改动推送到服务端
④给予修复问题后的代码发布新版本,确认无误后把改动合并到主分支,并删除问题修复分支
⑤切回自己之前正在开发的需求分支,继续工作


三、如何使用分支管理需求和bug

11、查看本地分支:git branch,按q可以退出查看分支结果
查看全部分支:git branch -a
查看提交情况:git show 分支名|commitid|标签名
查看详细的提交情况:git show + …
查看有哪些提交:git log
git log --oneline
12、新建与切换分支:
git branch + name:创建
git checkout + name:切换
git branch +name +commitid:使用指定commitid创建新分支
git check -b +name +branchname:自动切换到新建的分支
git merge +name:把名为name的分支合并当前所在分支
13、出现冲突时:查看冲突并处理冲突
15、如何查看有哪些为处理的冲突:git diff
16、无用分支删除:
删除分支1和分支2:git branch -d 分支1 分支2
强制删除分支1和分支2:git branch -D 分支1 分支2
17、把新分支推给服务器端:git push
如果推的分支没有上游分支,需要git push --set-upstream origin +name


四、如何在Git中管理和使用标签:

18、代表性用途:在版本发布时以版本号为名打一个标签用来标记发布的节点
19、查看标签:
本地仓库:
(1)所有:git tag
(2)过滤:git tag -l + “过滤内容”,例如git tag -l “*3”表示只查看以3为结尾的
远端仓库:
(1)git ls-remote --tags
(2)没有内置过滤,使用管道过滤:git ls-remote --tags | grep
20、git tag -a v.1.0.1 -m 这是一个附注标签
21、推送标签到远端:git push + remoteName +tagName指定tagname推送到remotename,例如 git push origin v1.0.1
21、推送所有到远端:git push + remoteName --tags
22、删除本地标签:git tag -d v.10.1
23、同步到服务端:git push origin :refs/tags/v.1.0.1或者直接git push -d
24、检出标签:与检出分支完全一致,git checkout


五、如何花式查看仓库提交记录:

25、git log -p/–patch可以在每条提交下面展示出该提交具体都修改 了哪些文件的哪些行
26、提交的简略统计信息:如果想知道哪些被修改了但没必要知道所修改的具体行可以用 --stat参数,git log --stat
27、使用不同风格展示结果:。。。没啥用,想用可以现查
28、对结果进行筛选:
(1)限制输出量,例如git log 20 ,表示只显示近20次
(2)–since,–after:git log --since=“2021-04-19”
(3)–until,–before:
(4)–author:git log --author=xubanxian只显示具体的提交人
(5)–committer
(6)–grep: git log --grep=“修复”
(7)-S
29、显示分支路径:git log --graph
常用参数:太多了用到自查


六、撤销提交

30、还原已更改而未提交的文件:git restore或者git checkout – 文件1 文件2
31、取消暂存的文件:git restore --staged 文件名1 文件名2,或者git reset HEAD 文件1 文件2 此时变换为已修改但还未暂存的状态,再用1中操作即可
32、修改上次已提交信息(为commit之前):有时候提交发现提交出了问题(提交信息写错了/有文件忘加△),此时可以使用–amend的命令来重新提交上一次提交的内容(有文件提交多了想删文件不行)
例如:git commit - “修复了一些buggg”,可以git commit --amend -m “修复了一些bug”
一篇不错的讲解博客:https://blog.csdn.net/yiyexy/article/details/126125892?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169194314316800182141152%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169194314316800182141152&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-2-126125892-null-null.142v92chatgptT0_1&utm_term=git%20commit%20–amend&spm=1018.2226.3001.4187
个人归纳总结:其实就是还没push前,你可以用amend对commit的信息进行修改,如果再加人新文件,只要把原本提交信息按照你新增的内容进行修改即可
33、撤回commit(谨慎使用):
get reset [选项] [要撤销的位置]
git reset --soft HEAD^,撤销上一个commit,但不撤销add
git reset --soft HEAD~N,撤销N个commit,但不撤销add
git reset --mixed HEAD~1,撤销上一个commit和add,但不删除代码
git reset --hard HEAD^,撤销上一个commit和add并删除代码
git reset commitid(比较有用但是非常危险),撤回到指定commit


七、远程仓库管理

34、查看远程仓库:git remote,加上-v会输比较出详细信息,如果用show(gut remote show origin)会输出指令仓库更加详细的信息
35、如何添加远程仓库:使用git clone检出仓库以后,本地仓库里面就会有一个名为origin的远程仓库
想添加一个新的仓库就要使用:git remote add 名称 地址(git remote add git2 …/git2
36、推送分支到不同仓库:git push --set-upstream + 远程名 + 分支名(git push --set-upstream git2),req1与git2均处于master中,如果将master推给git2,会直接报错
37、git checkout bug1,git push git2,将bug1推送到git2
38、重命名已经配置的远程仓库:git remote rename 仓库名 新仓库名,git remote rename origin gitee
39、删除远程仓库:git remote remove + 远程仓库名


八、变基☆

40、什么是变基:在上面我们介绍了整合分支最容易的方法就是merge,它会把两个分支的最新快照,以及二者最近的祖先进行三方合并,合并的结果是生成一个新的快照并提交。
其实还有一种名为变基(rebase)的方法,可以把分支b的所有更改在a的基础上应用一次,然后把应用后的结果放到b里面。你可以使用rebase把某一分支上的所有修改都复制到
另外一个分支上,就好像重新播放一样,在目标分支上面重新应用一遍,通俗理解就是改变某个分支所基于的分支。
41、git rebase + 新基于的分支名或commit
42、不切换分支进行变基:git rebase + 新基会把当前分支进行变基,也可以使用下面的命令对指定的分支进行变基:git rebase + 新基 + 目标分支,
例如git rebase master a,相当于把a变基到master,git rebase master需要当前活动的分支是a,
而git rebase master a则可以在处于任何分支的情况下自动切换到a,并把a变基到master。
43、变基到父对象的父对象:(内容较为复杂未来再做整理)
44、什么时候不能用变基:
变基会让团队协作代码变得混乱、会破坏分支间的关系、使用不当会回调整个分支内容
(1)你所变基的目标分支还有其他人在上面提交代码
(2)你们团队的提交模式不是直接提交,而是PR(Pull Request)
所以使用变基的时候一定要慎之又慎!


九、cherry-pick

内容待补充

你可能感兴趣的:(不看后悔,git,git,笔记,源代码管理,gitlab,github,gitee)