贴个车 http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/
git add . 或某个文件,某些文件
git commit -m 'fix ' 提交信息
git status 查看当前版本库状态
git diff 文件 1 文件 2 对文件进行比较(也可在版本之间进行比较,后面文件均替换为版本号)
git push 推送
git pull 拉取
git merge 合并指定分支到当前分支
git checkout +文件,表示 撤销对某文件的修改; + 分支,表示切换分支
git rm 文件 删除某文件
git clone 克隆
git checkout -b +分支,表示创建新分支(非 master 分支)
git branch 查看当前分支; + -a 表示查看所有分支
git branch -d +分支 删除某分支
日志查询:
git log:
查看某分支当前的版本号
操作日志查询:
可以查看某分支自己之前执行过什么操作。
git reflog:
工作区就是存有.git 文件夹的父文件夹,暂存区是在.git 文件夹里的区域。
我们执行的 git add [.]就是把文件从工作区添加到了暂存区(stage)中,而 git commit 就是 把暂存区里的东西提交到当前的本地分支比如 test 分支,工作区就变干净了。
添加远程仓库 git remote add origin + 远程 git 地址 (例如 [email protected]:1900/reviewgit.git),
创建一个分支就是创建一个指针,该指针指向 master 的某个节点,另外会有 head 指针来负责分支切换。具体指令在文章起始部分。
黄金准则是:有冲突解决冲突,而不要直接就回滚,因为代码库不是你一个人在用!
操作就是,打开冲突文件,搜索 >>>>>标识确定冲突部分,删除不想要的内容,删除>>>> 及 ====,然后 git add 文件,提交。
并发的处理了两个问题,问题 1 需要尽快提交解决线上问题,问题 2 还没搞定,这个时候可以利用 stash 功能来暂存。git stash,接着解决问题 1,在当前分支创建一个临时分支,然后修改问题,并提交。
暂时先这么多吧,待续。
1
shawndev 2019-10-26 11:38:30 +08:00
git stash, git rebase, git cherry-pick, git reset, git revert, git reflog...
|
2
wysnylc 2019-10-26 11:56:25 +08:00
测试分支未完成代码被错误合并到 A 分支,然后 A 分支进行了代码开发 3 个版本后,将 A 分支合并到主干并更新.此时 A 分支有测试分支的未完成代码和本身 A 分支正常开发的代码,主干合并了 A 分支同样被测试分支代码污染
请问如何解决? |
3
chuxiaonan 2019-10-26 12:02:49 +08:00
@wysnylc 老哥 git rebase 了解一下
当然 如果远端都被污染了 肯定是少不了 git push --force 的 |
4
iMusic 2019-10-26 12:10:14 +08:00
这是基础,不是进阶吧。
|
5
orzorzorzorz 2019-10-26 12:46:27 +08:00
@wysnylc #2 如果不急,那就主分支合并到测试分支,写完了同步三个分支;急的话,revert A 合并进主分支的那次提交,checkout 一个新分支继续改,改完同步下三个分支
|
6
HannibaI 2019-10-26 13:38:43 +08:00
应该多写写日常工作流。这些东西我 man git 看一下就有了
|
8
wysnylc 2019-10-26 14:23:02 +08:00
@chuxiaonan #3 最终的做法是 reset 同时将主干和 A 分支回滚,然后重新将 A 分支的代码 commit 然后 force A 分支和主干
我的本意是想考考贴主,天天记死命令能不能解决这个问题 这种基础知识都不知道有多少博客了还拿出来炒冷饭一点干货没有 |
9
marco25 2019-10-26 14:28:33 +08:00
自从用了 magit,git help 都不需要查了
|
10
xuboying 2019-10-26 14:51:10 +08:00
没有 git fetch。。。看来是不太在乎队友在干嘛的老司机了
|
12
chuxiaonan 2019-10-26 14:53:47 +08:00
@wysnylc 哈哈 这样呀
|
14
wysnylc 2019-10-26 16:40:18 +08:00
@sdushn #13 那要看你怎么"解决"A 分支的错误,如果你只是想删除被污染的代码然后合并主干的话不行,因为这部分代码在未来是有用的,那么为了解决你的这个删除带来的问题需要将被删除的代码重新提交.而且只在 A 分支其实怎么动都无济于事,始终是需要在主干上 force 的,你细细的品
|
15
iyeatse 2019-10-26 20:19:11 +08:00
不试试 zsh 吗
gaa,gc,gst,gp,gup,grb |
17
weixiangzhe 2019-10-26 21:18:59 +08:00 via Android
github。上有个飞行手册啥的 覆盖面很广 很好用
|
18
secondwtq 2019-10-27 00:24:04 +08:00
|
19
Allianzcortex 2019-10-27 02:17:48 +08:00 via iPhone
@secondwtq 禁止 force push 的话在我本底分支 squash & rebase 了几个我的小 commit 合并为一个,怎么同步到远程上?
|
20
Allianzcortex 2019-10-27 02:24:04 +08:00 via iPhone
@secondwtq 搜了下也就是这种情况: https://stackoverflow.com/questions/1302769/keeping-remote-repository-in-sync-through-a-rebase,我的解决方法也是和回答里说的,You need --force because origin/topic will change the ancestor and you have disable fast forward check. 不允许在单独的 branch force push 的话这种情形似乎无法做?...
|
21
secondwtq 2019-10-27 03:25:05 +08:00
@Allianzcortex 就是不能做。实际上有些项目是鼓励控制 commit size 的
|
22
nznd 2019-10-28 10:25:56 +08:00
自己一个人仓库 push 不上去 就 fuxk 一下(
当然这不是好习惯 但是设备多起来 git 控制版本有点繁琐,remote 桌面一个复制就过去了 要是用 git 一定要 pull merge commit push 然后再去另一边 pull 我好难啊( |
24
coco65535Plus 2019-10-28 16:28:14 +08:00
git commit --amend -m "new xxxx"
git merge --no-ff [develop] |
25
coco65535Plus 2019-10-28 16:30:00 +08:00
git remote set-url origin [new remote repository url] 项目迁移地址时使用
|