2012-07-18 22 views
0

我對git很陌生。我在本地服務器上克隆了一個項目,並使用TextMate編輯我的文件。編輯來自不同git分支的文件

所以,我有一個叫master的分支。然後我創建了一個名爲local的第二個分支。我做了一些修改,添加了一些文件並提交了所有文件。但現在當我回到我的主分支時,我無法使用TextMate編輯古代文件(未修改的主分支文件)。如何解決這個問題?我是否應該不使用TextMate?

最佳, 邁赫迪

+0

可能只是一個權限錯誤。 Git不會阻止你編輯文件... – Manatok 2012-07-18 11:16:43

+0

但是當我用我的Mac上的文件查看我的文件時,它們對應於最新版本。看來我不能使用TextMate進行編輯,不是嗎? – 2012-07-18 11:20:27

回答

2

你有沒有做這樣的事情,那麼:

#clone out repo that only has master branch 
git clone path/to/repo 

#create and checkout branch local 
git checkout -b"local" 

## edit files ### 

#stage files 
git add . 

#commit changes 
git commit -m"did some work" 

#switch back to master 
git checkout master 

此時,你應該在你本地的master分支,你是克隆後。如果你想在本地更改合併到主:

git merge local 

在任何時候,你可以運行git status看看哪些文件已經改變,git branch -a看到所有的分支機構對您的回購

如果您沒有這一切正確,仍然無法編輯文件,那麼它可能是一個權限問題:

sudo chmod 644 /path/to/local/files/* -R 
+0

我就像你說的一樣,逐點。但是例如,當我切換後運行ls命令時,我發現我在本地分支上工作時添加的所有文件。這怎麼可能? – 2012-07-18 11:35:09

+0

只有一點,我沒有合併兩個分支,因爲我現在不想這樣做 – 2012-07-18 11:36:21

+0

好吧,如果文件未被git跟蹤,那麼當您切換分支時它們將保持原樣,因爲它們不受git控制。你首先需要提交它們。因此,例如,如果您克隆了回購,添加文件,然後在不提交這些文件的情況下切換分支,那麼這些文件會跟隨您,直到您將它們提交給分支。如果你運行一個git狀態,你會在標題下看到這些文件:Untracked files: – Manatok 2012-07-18 11:37:53

1

因此,這裏是一些有用的命令

假設你是在主分支,那麼你創建newbranch

$ git的結帳-b newbranch

然後在這裏編輯一些文件,那麼你需要提交改變

$ git的補充。 $ git的承諾-m 「提交信息」

然後切換到主分支

$ git的結帳主

合併更改

$ git的合併newbranch

0

我總是需要像那樣編輯。舉例來說,我想出了一些重要的東西,並且需要立即在一個文件A中將它們慢跑,它不在我正在編輯未完成提交的文件B的分支中,我的操作如下所示:

# stage and commit the fileB 
git add fileB; git commit -m 'uncompleted' 

# checkout to the branch containing file A 
git checkout branchA 

# editting the file A 

# stage and commit the fileA 
git add fileA; git commit -m 'big idea' 

# go back to the first branch 
git checkout branchB 

# reset to the previous commit without changing the working-spot 
git reset --soft HEAD~ 

# edit again and commit 
git add fileB; git commit -m 'extend the previous commit' 

現在它就像好像我生不逢時brainstrom的中斷都沒有發生過的文件B.總覺得在不同勢分支機構進行編輯。