3、git实战操练

1、马上要封包上线了,如何将这个版本的代码封存。

命令 操作/含义
git tag tag的创建,推到服务器
git archive 对源码进行打包 $ git archive master --format=zip --output master.zip

2、 明天就是上线日期,今天合并你已经做完的几个关联性不大的feature,怎么做?

git cherry-pick操作

命令 操作/含义
git cherry-pick git cherry-pick commit_id
如果遇到冲突,就先解决冲突。 1.git add –u 2.git cherry-pick --continue(--abort)

3、如果有人强推到服务器了,你该怎么办。

1.在项目中配置,禁止任何人push –f操作。
2.如果还是被强推了,不能随便拉取服务器代码,首先就是将master分支备份下。先fetch下,和同事在确认下为什么需要强推的。在确认无误的情况下,才能同步master分支的代码。

4、 队友无法正常上网,但是他写的feature非常紧急,该怎么同步代码?

1.先生成patch文件 $ git format-patch start_commit_id..end_commit_id $ git format-patch –n3
2.可以事先检测在合并的时候是否存在冲突 $ git apply --check patch_file
3.合并patch文件 $ git am patch_file
4.如果合并失败 $ git apply --reject patch_file
5.根据生成的.rej文件手动的合并到文件中
6.删除.rej文件,将修改的文件添加到缓存中
7.git add 后继续git am --continue

5、领导让你去合并代码,发现很多的分叉点,该怎么做。

$ git rebase branch_name
$ git checkout master
$ git merge feature_branch

6、一个feature这么多提交记录?能不能少一点,以及合并不连续的commit。

$ git rebase –i

7、 在现场开发,如何用U盘作为服务器。

$ git clone --bare DataStruct-Algorithm /F/datastruct-algorithm.git
# 先创建一个裸的仓库
$ git init --bare DataStruct_algorithm.git
# 添加远程仓库
$ git remote add F_DISK /F/datastruct_algorithm.git/
# 将所有的分支推到F_DISK远程服务器上
$ git push F_DISK --all

8、正在开发新的feature,有个紧急的bug需要你处理该如何保护开发现场。

$ git stash save “message ”

9、同事的这个commit message写的不对,请你帮忙修改

$ git rebase -i

10、如何进行版本回退

$ git reset --hard commid id
$ git reset --soft commid id

11、如何优雅的迁移代码

1.给当前的库增加远程服务器
2.将当前库中的所有记录push新的服务器上
本质就是练习7的变种

12、 队友辛辛苦苦提交的代码找不到了,该如何寻回?

$ git reflog –n10
$ git cherry-pick commit_id

你可能感兴趣的:(Git,git)