2016-05-04 27 views
1

如何結賬而不修改文件?Git - 如何結賬無需修改文件?

有沒有可以做以下事情的git命令?

~/target-dir (some-branch)$ mkdir /tmp/tmp-target-dir 
~/target-dir (some-branch)$ cp -r * /tmp/tmp-taregt-dir 
~/target-dir (some-branch)$ git checkout -f master 
~/target-dir (master)$ cp -r /tmp/tmp-target-dir/* . 
+1

您可以藏匿,退房,然後在彈出的藏匿 – Rob

+0

我會,如果我使用藏匿解決衝突。 –

+0

是的,但在解決衝突時,您始終可以選擇正確的版本 – Rob

回答

1

我必須解決衝突,如果我用藏匿

然後另一個方法是:

  • create a second working treegit worktree(GIT 2.5+,最好的git 2.8 +):

    cd /targetdir 
    git worktree add ../master master 
    
  • 從某些分支工作樹到主工作樹添加文件

    cd ../master 
    git --work-tree=../targetdir add -A . 
    

這樣一來,你可以做一個git diff,看看通過導入some-branch工作樹添加/修改/刪除的內容,進入master工作樹。

1

使用復位(--soft不觸及索引文件或工作樹,不過在頭復位到<提交>):

git reset --soft master

它重置當前分支(如果是不是主人)不接觸文件。

但似乎更接近你問是頭移動到另一個分支,而藏在心裏的是,只是簡單地說:

git symbolic-ref HEAD refs/heads/master

0

正如我從你寫的代碼看,你想所有的東西複製從some-branchmaster,所以實際上要合併到some-branchmaster

~/target-dir (master)$ git merge --no-ff some-branch 

--no-ff標誌讓英語新你會得到合併提交,你將能夠清楚地區分它。

如果在合併過程中你面對衝突 - 你只需要處理他們