Git是程序员的一项必备技能,每个程序员都‘会‘。 有时,却发现身边的朋友没有很好的使用,在这里总结一下自己的Git使用习惯,有机会分享给他们_.
如果有路过的初学Git的小伙伴,能从此文中收获一点点,也是非常不错的事情。 「鼓掌」
我并不打算一个命令一个命令的说,一是我也不算精通,二来我觉得这既然是个工具,就应该按照他做什么来讲他怎么做。以下是我这次想要总结的(后续想到了再补充):
git 项目的合作方式比较常见的有两种 (更推荐第一种)。
第一种是用户fork代码库,然后每次提交都是提交到自己fork的代码库中,再从自己fork的库向原库提交Merge Request。(开源库的协作基本都是这样)
第二种是库上除了版本分支还有任务分支,每次接到任务后,都从最后要合并到的分支中checkout -b出一个任务分支, 完成后再合并到原分支中。
关于这两种各自的优劣,可以想一想,算是一个比较有意思的事情。
git clone url
git clone -b branch url # 当你只需要clone一个分支时,在项目中常见的情况是git clone -b dev url 即仅clone开发分支
# 如果你有时会用到自己的电脑开发公司的内容,你需要配置当前项目的用户和邮箱
git config user.name "xxxxx"
git config user.email "xxx@xxx.com"
如果你是第一种协作方式,那么以下步骤建议进行:
git remote add upstream url # upstream 可为其他的名字,url为原始库地址,这行命令是关联一个远程库并为这个关联取名
git remote -v # 查看本地库关联了哪些远程库
Tips:提醒一下初学的小伙伴,库中怎么辨认提交是你的呢,git config 就是为此而准备,为了避免每clone一个项目都config一次,我们可以git config --global, 这样你没有设置当前代码库,会默认使用global配置。
当然,这个可以随意配置,比如你的user.name为"iiiiiisu"可以的,所以更有效的辨认方式是ssh-key,动动手指搜一搜。
拉取代码需要注意的地方比较少,这里提两点:
Tips: git stash save "我暂存的代码是干嘛的", 向前面这样做可以在git stash list 的时候看到每一条暂存是干嘛的,当然,能不能看出来也取决于你的提示你自己能否看懂_
!!! 提交代码是代码协作最重要的一步,请谨慎提交。
提交代码最好注意以下几点
第一点很容易理解和解决,提交前解决冲突远比提交后解决冲突来得简单和优雅,可以使自己的提交看起来更加的干净,解决方法的话参考拉取代码部分,让冲突发生在本地未提交时。
第二点的重点是细心的审视自己的代码,和规范的提交操作, 解决冲突也是减少提交次数的必要操作。
第三点的话,就全凭自觉了。
第四点,两个,哦不,三个方法避免,手动删除&_&,
下面做个示范,假设当前分支为dev, origin 指向fork库, upstream指向原库
git add . # 假设没有不相关文件
git stash save "temp"
git pull upstream dev
git stash pop
# 若有冲突此时处理
git commit -m "taskid: 这个任务是干嘛的" # commit内容较短时
# or git commit # commit 内容较长时
git push origin dev
# 网站上提Merge request。
# 分支方式协作提交类似,请自行带入
Tips: git add 后发现add多了?git reset file, git reset . 可以取消所有add,可以避免add不相关的文件带来的问题。
git commit 的信息需要修改? git commit --amend 试试,或许这正是你想要的
.gitignore 最通用的忽略方式,编写简单,所有人都会受到影响,适合忽略编辑器文件夹,项目log,和项目编译运行时产生的文件和文件夹,如exe, pycache 文件夹, target文件夹等等
.git/info/exclude (文件中内容填写类似.gitignore, 适合在只忽略自己本地文件的时候使用,不会像.gitignore一样影响所有人, 我个人认为这个很有用 )。
现在模拟一个场景,同一个补丁分别添加dev分支,main(master)分支,和某一个特性分支假设名为rainbow
当前本地为dev
# 这里忽略push步骤等,
git commit
git push origin dev
git log # 获取刚才commit的id
git checkout main
git cherry-pick commitid
git push origin main
git checkout rainbow
git cherry-pick cinnutud
git push origin rainbow
使用git cherry-pick 除了比手动改了提交更方便外,还能保证这几个分支合并的时候,不会因为这些相同的代码产生冲突,因为他们的commitid是同一个。
# 以下内容与本文无关
若编程只是兴趣。(Golang, Python,Rust -> Web、GUI、OS)
原文:https://www.cnblogs.com/moxu-ez/p/14669283.html