Git:即将分叉我自己的项目

Mer*_*erc 3 git branch

我是一个非常基本的git用户; 我基本上只使用命令git add -a(在修改后添加文件)然后git commit -m "what I did"然后git push(将其推送到我的服务器).

现在我想对我的代码库做一些非常激烈的事情.可能不起作用的东西 - 我将不得不回到原来的位置.

我怎么做?我创建一个"分支"吗?还是一个标签?或者是其他东西?

我正在使用一组简单的命令进行简单的解释.也回到原来的HEAD,或者然后(也许)将更改合并到HEAD(这将不会改变)

芝加哥商业交易所.

Mat*_*son 7

你需要一个分支.

git checkout -b nameofyournewbranch
Run Code Online (Sandbox Code Playgroud)

这会将您当前的分支(默认名称为"master")检出为具有您指定名称的新分支.您现在执行的任何提交都将在新分支上.如果你想离开它并回到原来的位置:

git checkout master
Run Code Online (Sandbox Code Playgroud)

回到你的新分支:

git checkout nameofyournewbranch
Run Code Online (Sandbox Code Playgroud)

如果要将分支合并到主代码库中:

git checkout master
git merge --no-ff nameofyourbranch 
Run Code Online (Sandbox Code Playgroud)

--no-ff意味着你会看到它从master分支出来然后重新分支,让你跟踪不同的功能.

要查看您正在做什么,请获取某种类型的git源代码树查看器,例如source tree,gitk等.如果您可以直观地看到它们,那么更容易理解分支正在做什么.

更新: 要检查合并之前会发生什么,请在与master相同的位置创建一个临时分支并合并到那里:

git checkout -b tempbranchname master
git merge --no-ff nameofyourbranch
Run Code Online (Sandbox Code Playgroud)

如果您喜欢它,请将它合并到master中,就好像您首先在master上执行它一样:

git checkout master
git merge tempbranchname
Run Code Online (Sandbox Code Playgroud)

如果不这样做,只需删除它:

git checkout master
git branch -D tempbranchname 
Run Code Online (Sandbox Code Playgroud)

-D表示即使未合并到master也会删除.正常使用-d,如果您尝试删除丢失的未合并内容,则会收到警告.