https://www.jianshu.com/p/5c9c6383aa36

工作流

master
develop
feature

变基

只能变基本地commit记录,已经推送到远程的库的commit历史,千万不要进行变基操作

开发合并别人的分支,保存图谱干净

  • 在dev1分支上进行开发,然后commit提交,在dev1分支上生成一个提交单。
  • 切换到master分支,与remote/master分支同步。
  • 切换回dev1分支,将master分支rebase到dev1分支上,如果有冲突,修改冲突。rebase操作的冲突修改与merge不一样,修改完冲突后,保存进index( c),然后直接git rebase –continue即可,不同再多做一次提交。
  • 切换回master分支,合并dev1分支,此时合并会非常顺畅。然后push。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

mkdir test1
cd test1

echo 1 > file
git add .
git commit -m '1'

git checkout -b dev
echo 2 >> file
git add .
git commit -m '2'

git checkout master
git pull origin master


git checkout dev
git rebase master

# fix config

git add .
git rebase --continue

git checkout master
git merge dev

删除到某个commit

  1. 找到要回退的commit的前一个commit的hash值

  2. git rebase -i commit_hash

  3. 交互界面出现这个hash值之后的所有commit记录,pick–>drop, 丢弃你不想要的commit

  4. git rebase –continue

  5. 出现问题使用 git rebase –abort

比较分支区别

  • git diff branch1 branch2 –stat //显示出所有有差异的文件列表

  • git diff branch1 branch2 文件名(带路径) //显示指定文件的详细差异

  • git diff branch1 branch2 //显示出所有有差异的文件的详细差异

多个commit合并为一个

  1. git rebase -i commit_hash
  2. 使用squash
  3. 出现问题使用 git rebase –abort

修改某个commit的内容(是文件内容不是commit message)

  1. git rebase -i commit_hash
  2. 使用edit
  3. 出现问题使用 git rebase –abort

远程库强制覆盖本地

1
2
3

git fetch --all
git reset --hard origin/master