Re: Is the entire working copy “at one branch”?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks Alexei!

On Sat, Oct 29, 2016 at 12:47 PM, Alexei Lozovsky <a.lozovsky@xxxxxxxxx> wrote:
> Hi Stefan,
>
> Generally with git, your entire working copy will have the same
> revision (set to current branch, aka HEAD). The idea behind this
> is that your working copy of a repository should always be in
> consistent state.
>
> You can check out specific files or directories from another
> revision (mimicking "svn update -r1234 filename"):
>
>     $ git checkout branch-or-sha-hash -- filename
>
> However, SVN tracks the 'revision' thing on per-file basis, while
> in git this is a property of the working copy. So if you do like
> above then git will be telling you that the 'filename' has been
> changed (as it is certainly different from its pristine version
> in HEAD):
>
>     $ git status
>     On branch master
>     Changes to be committed:
>       (use "git reset HEAD <file>..." to unstage)
>
>             modified:   filename
>
> So it's generally not recommended to do such a thing.
>
> Another thing that you _can do_ in git to mimick SVN is the
> 'standard layout'. There is a feature called "git worktree" which
> allows you to have SVN-like directory structure with multiple
> directories linked to different working copies:
>
>     $ mkdir my-project
>     $ cd my-project
>     $ git clone my-project-repository master
>     $ mkdir branches
>     $ cd master
>     $ git worktree add -b branch-1 ../branches/branch-1
>     $ git worktree add -b branch-2 ../branches/branch-2
>
> After that you will have directory structure like this:
>
>     $ tree my-project
>     my-project
>     ├── branches
>     │   ├── branch-1
>     │   │   ├── 1
>     │   │   ├── 2
>     │   │   └── 3
>     │   └── branch-2
>     │       ├── 1
>     │       ├── 2
>     │       └── banana
>     └── master
>         ├── 1
>         └── 2
> You can work with these working copies separately, like you
> would be working with SVN. Commits in 'master' will go to the
> 'master' branch, commits made in 'branches/branch-1' will go
> to the 'branch-1' branch.




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]