What does git fetch do exactly?

Edit: I checked this. What does FETCH_HEAD in Git mean? before asking a question.
Sorry for the original inaccurate question.

My question is: how does fetch work? Does the extraction retrieve the entire current log?

This is my situation: my teammates and I use the same repository, which has only one branch. Therefore, we need to make a selection before clicking anything.
Usually we do it as follows:

git status
git add .
git commit -m message1
git fetch origin
git reset head
git status
git add .
git commit -m message
git push

But after reset it seems that my previous commit (c message1) was gone.

Is this normal or is something wrong?
How can I access my local history? They are synchronized, but my local history is gone.

, : CLI Git.
- "git fetch head", .
, ? ?
"git fetch" "git fetch head"?

+12
2

git fetch . .

, , , Git . , , , , Git: . : , , , - .

,

, . , : , ( ) git commit. , - : , git commit.

, Git , , . . Git git worktree add ; / . , " " (aka HEAD) . HEAD commit : . Git HEAD , .

: , . Java Python HTML -, -. , Git, , , - ..

, , , , , . . , , , ( , ). , , . : " " ( , git commit), , . 1


1 , . VCS " ". , ; Mercurial . , , , , Git, Git . - , Git : Mercurial - , Git.


; -

, git commit, Git , . ( git add : , , , "" .) Git , , .

Git - . , " " . , , :

A <-B <-C   <-- master (HEAD)

, master " " , C, , Git , b06d364.... ( HEAD master. Git HEAD : Git HEAD master, hash ID master.) C , " " - --commit B, ; commit B A. ( commit A , , , . root commit.)

, Git , .. commit C, . D , , :

A <-B <-C <-D

, D C. , D , Git -, master, D - C. , HEAD, : master. , :

A <-B <-C <-D   <-- master (HEAD)

, Git: , master, Git, , . , .., , .

, , , . , - : Git , . Git , . , :

A--B--C--D   <-- master (HEAD)

: git fetch

git fetch, Gits, , . , Git, , :

A--B--C

, . , - , : - 2 , , , .

Git commit D. - - , . , . () ; "Sally" . : :

A--B--C   <-- sally/master
       \
        D   <-- master (HEAD)

, . :

A--B--C--E--F   <-- master (HEAD)

, ( , git fetch):

A--B--C   <-- harry/master
       \
        E--F   <-- master (HEAD)

git fetch, Git Sally Git , - , master C. - E F. , Git , . Git , :

        E--F   <-- sally/master
       /
A--B--C
       \
        D   <-- master (HEAD)

, git fetch , .

, master, , Git, Git sally/master. master HEAD . " Git", Git , .


2 , , Git, , Git. SHA-1, , . Git, , SHA2-256 SHA3-256 - . .: -)


rebase- git reset, ,

, , Sally, , . D.

, "" Git origin. , master, origin/master, -, commit D F:

A--B--C--D   <-- master (HEAD)
       \
        E--F   <-- origin/master

( D , , ,

- git merge git rebase. ( , , .)

, git rebase -, , . , git merge , - , , "", . G :

A--B--C--D---G   <-- master (HEAD)
       \    /
        E--F   <-- origin/master

, . 3 , . G origin: G D, F, Git .

- , . , : master Sally ( origin 's) master.

git rebase , , , . , commit D F, G, , git rebase , , , , .

origin/master, , , D. git rebase D, D', F, D' F. : 5

A--B--C--D   <-- master
       \
        E--F   <-- origin/master
            \
             D'   <-- HEAD

, git merge , commit D. 4 , , , , master, commit D':

A--B--C--D   [abandoned]
       \
        E--F   <-- origin/master
            \
             D'   <-- master (HEAD)

D. 6 , , :

A--B--C--E--F   <-- origin/master
             \
              D'   <-- master (HEAD)

git push commit D' origin.


3 Git ( Mercurial), . , , , .: -)

4 , , , C, D F, . , , .

5 , HEAD master, . , - --, Git , . , , , , Git " HEAD", , rebase , .

6 Git reflogs ORIG_HEAD. ORIG_HEAD , " ", reflog , , 30 . a git gc .


git pull git fetch,

, git fetch Git git merge, git rebase.

, , git pull, git fetch, . , , pull.rebase --rebase .

, git merge git rebase, git pull, git merge git rebase . , . , . , , , , . git pull, , !

, , . git fetch? ? , , , ? , git fetch . git pull, , , , .

, git pull , , - git fetch, , - .

+24

, git fetch - .

 --o--o--o (origin/master)
          \
           x--x (master: my local commits)

, , git fetch:

git fetch

--o--o--o--O--O (origin/master updated)
         \
          x--x (master)

git rebase origin/master

--o--o--o--O--O (origin/master updated)
               \
                x'--x' (master rebased)

git push

--o--o--o--O--O--x'--x' (origin/master, master)

, Git 2.6, :

git config pull.rebase true
git config rebase.autoStash true

git pull origin/master. git push.

+4

All Articles