Yerel depo dal─▒n─▒ t─▒pk─▒ uzak depo HEAD'si gibi s─▒f─▒rlay─▒n


Al─▒nan cevaba git


Yerel ┼čubemi uzak depodaki ┼čube gibi olacak ┼čekilde nas─▒l s─▒f─▒rlar─▒m?

Yapt─▒m:

 git reset --hard HEAD
 

Ama ├žal─▒┼čt─▒rd─▒─č─▒n─▒zda git status ,

 On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
      modified:   java/com/mycompany/TestContacts.java
      modified:   java/com/mycompany/TestParser.java
 

L├╝tfen bana neden bu 'modifiye edildi─čimi' s├Âyleyebilir misiniz? Bu dosyalara dokunmad─▒m m─▒? Yapsayd─▒m, bunlar─▒ kald─▒rmak istiyorum.


3400









Cevap say─▒s─▒n─▒ say: 19






┼×ubenizi uzak ┼čubeyle tam olarak e┼čle┼čtirmek i├žin ayarlamak iki ad─▒mda yap─▒labilir:

 git fetch origin
git reset --hard origin/master
 

Bunu yapmadan ├Ânce ge├žerli ┼čubenizin durumunu kaydetmek istiyorsan─▒z (tam olarak), ┼čunlar─▒ yapabilirsiniz:

 git commit -a -m "Saving my work, just in case"
git branch my-saved-work
 

┼×imdi ├žal─▒┼čman─▒z, geri istemek istedi─činizde (veya daha sonra bakmak veya g├╝ncellenmi┼č ┼čubenize g├Âre farkl─▒l─▒k g├Âstermek) durumunda, "kaydedilmi┼č i┼čim" dal─▒na kaydedilir.

─░lk ├Ârne─čin, uzak deponun ad─▒n─▒n "orijinli" oldu─čunu ve uzak repodaki "master" olan ┼čubenin yerel reponuzdaki mevcut kontrol edilen ┼čubeyle e┼čle┼čti─čini varsayd─▒─č─▒n─▒ unutmay─▒n.

BTW, i├žinde bulundu─čunuz bu durum, ┼ču anda ├ž─▒plak olmayan bir havuzun ┼ču an kullan─▒ma al─▒nm─▒┼č olan ┼čubesine itme yap─▒lm─▒┼č ortak bir dava gibi berbat g├Âr├╝n├╝yor. K─▒sa bir s├╝re ├Ânce yerel repo'nuza girdiniz mi? De─čilse, endi┼čelenmeyin - ba┼čka bir ┼čey bu dosyalar─▒n beklenmedik ┼čekilde de─či┼čtirilmesine neden olmu┼č olmal─▒. Aksi takdirde, ├ž─▒plak olmayan bir havuza girmenin ├Ânerilmemesi gerekti─čini bilmelisiniz (├Âzellikle ┼ču anda kullan─▒ma al─▒nm─▒┼č ┼čubeye de─čil).


5927







Yapmam gerekiyordu (kabul edilen cevab─▒n ├ž├Âz├╝m├╝):

 git fetch origin
git reset --hard origin/master
 

Bunu takiben:

 git clean -f
 

yerel dosyalar─▒ kald─▒rmak i├žin

Hangi dosyalar─▒n kald─▒r─▒laca─č─▒n─▒ g├Ârmek i├žin (ger├žekten kald─▒rmadan)

 git clean -n -f
 

354







─░lk ├Ânce HEAD , ilgili yukar─▒ ak─▒┼č dal─▒n─▒n ├Ânceden getirilmi┼č haliyle s─▒f─▒rlay─▒n :

 git reset --hard @{u}
 

Belirtmenin @{u} veya ayr─▒nt─▒l─▒ bi├žiminin avantaj─▒ @{upstream} , uzak repo ve ┼čubenin ad─▒n─▒n a├ž─▒k├ža belirtilmesi gerekmemesidir.

Ard─▒ndan, iste─če ba─čl─▒ olarak ayr─▒ca a┼ča─č─▒dakilerle birlikte izlenmeyen dosyalar─▒ kald─▒r─▒n -x :

 git clean -df
 

Sonunda, gerekti─činde en son de─či┼čiklikleri al─▒n:

 git pull
 

246







git reset --hard HEAD asl─▒nda sadece son taahh├╝t durumuna geri d├Âner. Bu durumda HEAD ┼čubenizin HEAD'ini ifade eder.

E─čer birka├ž taahh├╝d├╝n├╝z varsa, bu i┼če yaramaz.

Muhtemelen yapmak istedi─čin ┼čey, men┼če ba┼č─▒na ya da uzaktaki depoya ne denirse s─▒f─▒rlan─▒r. Muhtemelen sadece b├Âyle bir ┼čey yapar─▒m

 git reset --hard origin/HEAD
 

Yine de dikkatli ol. Sert s─▒f─▒rlamalar kolayca geri al─▒namaz. Dan'─▒n ├Ânerdi─či gibi yapmak ve s─▒f─▒rlamadan ├Ânce de─či┼čikliklerin bir kopyas─▒n─▒ almak daha iyidir.


103







Yukar─▒dakilerin t├╝m├╝ do─čru, ancak ├žo─ču zaman projenizi ger├žekten s─▒f─▒rlamak i├žin, i├žinde bulunan dosyalar─▒ bile silmeniz gerekir .gitignore .

Proje dizininizi silme ve uzaktan kumanday─▒ yeniden kopyalaman─▒n ahlaki e┼čde─čerini elde etmek i├žin:

 git fetch
git reset --hard
git clean -x -d -f
 

Uyar─▒ : git clean -x -d -f ise geri d├Ân├╝┼č├╝ms├╝z ve dosya ve veri (kullanmakta ihmal var mesela ┼čeyler kaybedebilir .gitignore ).


70







Soru, burada iki konuyu kar─▒┼čt─▒r─▒yor:

  1. yerel bir dal─▒n uzaktan kumandan─▒n oldu─ču noktaya nas─▒l s─▒f─▒rlanaca─č─▒
  2. B├Âylece, nas─▒l (ve muhtemelen ├žal─▒┼čma dizini) kademelendirme alan─▒n─▒ temizlemek i├žin git status diyor nothing to commit, working directory clean.

Tek ad─▒ml─▒ cevap:

  1. git fetch --prune (iste─če ba─čl─▒) Uzak deponun yerel anl─▒k g├Âr├╝nt├╝s├╝n├╝ g├╝nceller. Di─čer komutlar sadece yereldir.
    git reset --hard @{upstream} Yerel dal i┼čaret├žisini, uzaktan kumandan─▒n anl─▒k g├Âr├╝nt├╝s├╝n├╝n oldu─ču yere koyar, ayr─▒ca dizini ve ├žal─▒┼čma dizinini bu i┼člemin dosyalar─▒na ayarlar.
  2. git clean -d --force Git ├žal─▒┼čmalar─▒n─▒ "├žal─▒┼čma dizini temiz" demeyi engelleyen izsiz dosyalar─▒ ve dizinleri kald─▒r─▒r.

37







A┼ča─č─▒daki komutlar─▒ kullan─▒n. Bu komutlar, izlenmeyen t├╝m dosyalar─▒ da yerel git'den kald─▒r─▒r

 git fetch origin
git reset --hard origin/master
git clean -d -f
 

30







Bu d├╝zenli olarak kar┼č─▒la┼čt─▒─č─▒m bir ┼čey. & Wolfgang'─▒n her dalda ├žal─▒┼čmas─▒ i├žin yukar─▒da verilen senaryoyu genelledim.

Ayr─▒ca "emin misiniz" sorusu ve baz─▒ geri bildirim ├ž─▒kt─▒lar─▒ ekledim.

 #!/bin/bash
# reset the current repository
# WF 2012-10-15
# AT 2012-11-09
# see http://stackoverflow.com/questions/1628088/how-to-reset-my-local-repository-to-be-just-like-the-remote-repository-head
timestamp=`date "+%Y-%m-%d-%H_%M_%S"`
branchname=`git rev-parse --symbolic-full-name --abbrev-ref HEAD`
read -p "Reset branch $branchname to origin (y/n)? "
[ "$REPLY" != "y" ] || 
echo "about to auto-commit any changes"
git commit -a -m "auto commit at $timestamp"
if [ $? -eq 0 ]
then
  echo "Creating backup auto-save branch: auto-save-$branchname-at-$timestamp"
  git branch "auto-save-$branchname-at-$timestamp" 
fi
echo "now resetting to origin/$branchname"
git fetch origin
git reset --hard origin/$branchname
 

22







Uzak havuzun olmas─▒ origin ve ilgilendi─činiz takdirde branch_name :

 git fetch origin
git reset --hard origin/<branch_name>
 

Mevcut ┼čube s─▒f─▒rlamak i├žin de, gitmek origin i├žin HEAD .

 git fetch origin
git reset --hard origin/HEAD
 

Nas─▒l ├žal─▒┼č─▒r:

git fetch origin Hi├žbir ┼čeyi birle┼čtirmeye ya da yeniden d├╝zenlemeye ├žal─▒┼čmadan en son s├╝r├╝m├╝n├╝ uzaktan y├╝kler.

Ard─▒ndan ┼čubeyi az ├Ânce ald─▒─č─▒n─▒z ┼čeye git reset s─▒f─▒rlar <branch_name> . --hard Se├ženek dosyalar─▒ e┼čle┼čecek ┼čekilde ├žal─▒┼čma a─čac─▒ t├╝m dosyalar─▒ de─či┼čtirir origin/branch_name .


15







─░┼čte en pop├╝ler yan─▒t─▒n ├Ânerilerini otomatikle┼čtiren bir betik ... Dallar─▒ destekleyen geli┼čmi┼č bir s├╝r├╝m i├žin https://stackoverflow.com/a/13308579/1497139 adresine bak─▒n.

 #!/bin/bash
# reset the current repository
# WF 2012-10-15
# see https://stackoverflow.com/questions/1628088/how-to-reset-my-local-repository-to-be-just-like-the-remote-repository-head
timestamp=`date "+%Y-%m-%d-%H_%M_%S"`
git commit -a -m "auto commit at $timestamp"
if [ $? -eq 0 ]
then
  git branch "auto-save-at-$timestamp" 
fi
git fetch origin
git reset --hard origin/master
 

14







Yapt─▒m:

 git branch -D master
git checkout master
 

dal─▒ tamamen s─▒f─▒rlamak


gerekli ┼čubeyi silmek i├žin ba┼čka bir ┼čubeye ├Âdeme yapman─▒z gerekti─čini unutmay─▒n.


11







Benim gibi bir probleminiz varsa, zaten baz─▒ de─či┼čiklikler yapt─▒n─▒z, fakat ┼čimdi, ondan kurtulmak istedi─činiz herhangi bir nedenle, en h─▒zl─▒ yol ┼č├Âyle kullanmakt─▒r git reset :

 git reset --hard HEAD~2
 

─░htiyac─▒n─▒z olmayan 2 tane komisyon vard─▒, bu nedenle 2 say─▒s─▒. S─▒f─▒rlamak i├žin onu kendi taahh├╝t say─▒n─▒z olarak de─či┼čtirebilirsiniz.

Bu nedenle sorunuzu yan─▒tlamak - e─čer uzak havuz ba┼čl─▒─č─▒ndan 5 taahh├╝tte iseniz, bu komutu ├žal─▒┼čt─▒rmal─▒s─▒n─▒z:

 git reset --hard HEAD~5
 

Yapt─▒─č─▒n─▒z de─či┼čiklikleri kaybedece─činize dikkat edin, bu y├╝zden dikkatli olun!


9







├ľnceki cevaplar, s─▒f─▒rlanacak dal─▒n ge├žerli dal oldu─čunu varsayar (teslim al─▒nm─▒┼č). Yorumlarda, OP hap497 , dal─▒n ger├žekten kontrol edildi─čini a├ž─▒kl─▒─ča kavu┼čturmu┼čtur, ancak bu, as─▒l soru i├žin a├ž─▒k├ža gerekli de─čildir. En az bir "yinelenen" soru oldu─čundan, ┼čubeyi tamamen kontrol etti─činizi varsaymayan, depo durumuna tamamen s─▒f─▒rlay─▒n , i┼čte bir alternatif:

┼×ube "mybranch" ┼ču anda kontrol edilmemi┼čse , "myremote / mybranch" ─▒n ba┼č─▒ndaki uzak dal─▒ s─▒f─▒rlamak i├žin, bu d├╝┼č├╝k d├╝zeyli komutu kullanabilirsiniz:

 git update-ref refs/heads/mybranch myremote/mybranch
 

Bu y├Ântem, teslim al─▒nan dal─▒ oldu─ču gibi b─▒rak─▒r ve ├žal─▒┼čma a─čac─▒na dokunulmaz. Bu sadece, ikinci arg├╝man olarak ne verilirse, ba┼č─▒m─▒n ba┼č─▒n─▒ ba┼čka bir g├Âreve g├Ât├╝r├╝r. Bu, ├Âzellikle birden fazla dal─▒n yeni uzak kafalarla g├╝ncellenmesi gerekti─činde faydal─▒d─▒r.

Ancak bunu yaparken dikkatli olun ve gitk kayna─č─▒ ve hedefi iki kez kontrol etmek i├žin veya benzer bir ara├ž kullan─▒n. Yanl─▒┼čl─▒kla bunu ge├žerli ┼čubede yaparsan─▒z (ve git sizi bundan uzak tutamaz), kafan─▒z kar─▒┼čabilir, ├ž├╝nk├╝ yeni ┼čube i├žeri─či ├žal─▒┼čma a─čac─▒na uymuyor, de─či┼čmedi (┼čubeyi tekrar d├╝zeltmek i├žin, daha ├Ânce oldu─ču yere.


7







S─▒k kulland─▒─č─▒m ┼čey bu:

 git fetch upstream master;
git reset --hard upstream/master;
git clean -d --force;
 

Herhangi de─či┼čiklik i├žin ba┼čka bir dal yerine ├ž─▒k─▒┼č yerel usta de─či┼čiklik yapmak i├žin de─čil iyi bir uygulama ├Ârne─čin de─či┼čiklik t├╝r├╝ne, taraf─▒ndan ├Ân├╝ne ┼čube ad─▒ ile oldu─čunu Not feat/ , chore/ , fix/ , vb B├Âylece sadece ├žekme de─či┼čikliklerine de─čil, gerek Master'dan herhangi bir de─či┼čikli─či bast─▒r─▒n. Di─čerlerinin katk─▒da bulundu─ču di─čer ┼čubeler i├žin de ayn─▒ ┼čey. Bu y├╝zden yukar─▒dakiler yaln─▒zca, ba┼čkalar─▒n─▒n taahh├╝t etti─či bir dalda de─či┼čiklik yapman─▒z ve s─▒f─▒rlaman─▒z gerekmesi durumunda kullan─▒lmal─▒d─▒r. Aksi halde, gelecekte ba┼čkalar─▒n─▒n itece─či bir ┼čubeye basmaktan ka├ž─▒n─▒n, yerine kontrol edin ve teslim edilen ┼čubeden s├Âz konusu ┼čubeye bast─▒r─▒n.

Yerel ┼čubenizi yukar─▒ ak─▒┼č dal─▒ndaki en son i┼čleme d├Ând├╝rmek istiyorsan─▒z, ┼ču ana kadar benim i├žin i┼če yarar:

Uzaktan kumandalar─▒n─▒z─▒ kontrol edin, giri┼č y├Ân├╝n├╝n ve men┼čeinizin bekledi─činiz gibi oldu─čundan emin olun, beklenenden fazla kullan─▒lmazsa git remote add upstream <insert URL> , ├Ârne─čin, istifa etti─činiz orijinal GitHub deposunu ve / veya kullan─▒n git remote add origin <insert URL of the forked GitHub repo> .

 git remote --verbose

git checkout develop;
git commit -m "Saving work.";
git branch saved-work;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force
 

GitHub'da, oradaki ├žal─▒┼čmay─▒ kaydetmek i├žin yerel ad ile ayn─▒ ad─▒ ta┼č─▒yan ┼čubeyi de kontrol edebilirsiniz, bununla birlikte, orijin geli┼čmesi yerel kay─▒tl─▒ ├žal─▒┼čma ┼čubesiyle ayn─▒ de─či┼čikliklere sahipse, bu gerekli de─čildir. ├ľrnek olarak geli┼čtirme dal─▒ kullan─▒yorum, ancak mevcut herhangi bir ┼čube ad─▒ olabilir.

 git add .
git commit -m "Reset to upstream/develop"
git push --force origin develop
 

Ard─▒ndan, herhangi bir ├žak─▒┼čma oldu─čunda bu de─či┼čiklikleri ba┼čka bir ┼čubeyle birle┼čtirmeniz gerekiyorsa, geli┼čtirmedeki de─či┼čiklikleri koruyarak kullan─▒n:

 git merge -s recursive -X theirs develop
 

Kullan─▒m s─▒ras─▒nda

 git merge -s recursive -X ours develop
 

┼×ube_ad─▒'n─▒n ├žak─▒┼čan de─či┼čikliklerini korumak i├žin. Aksi takdirde, ile bir birle┼čtirme arac─▒ kullan─▒n git mergetool .

T├╝m de─či┼čikliklerle birlikte:

 git commit -m "Saving work.";
git branch saved-work;
git checkout develop;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
git add .;
git commit -m "Reset to upstream/develop";
git push --force origin develop;
git checkout branch_name;
git merge develop;
 

Yukar─▒ ak─▒┼č / geli┼čtirme yerine bir i┼člem karmas─▒, ba┼čka ┼čube ad─▒, vb. Kullanabilece─činizi unutmay─▒n. ┼×ubenizin ye┼čil olup olmad─▒─č─▒n─▒ ve ├žal─▒┼čma dizininin temiz oldu─čunu g├Âsteren bir ├žal─▒┼čma olmad─▒─č─▒n─▒ (Oh, Z My Zsh gibi) kullan─▒n. hangi taraf─▒ndan onayland─▒ktan veya do─črulanabilir git status ). Bunun bir taahh├╝tle otomatik olarak eklenen herhangi bir ┼čey varsa, ├Ârne─čin, UML diyagramlar─▒, lisans ba┼čl─▒klar─▒, vb. Durumlar─▒n yukar─▒ ak─▒┼č geli┼čtirme ile kar┼č─▒la┼čt─▒r─▒ld─▒─č─▒nda bir taahh├╝t ekleyebilece─čini unutmay─▒n. Bu durumda, gerekti─činde de─či┼čiklikleri origin develop uygulayabilirsiniz upstream develop .


6







E─čer geri d├Ânmek istiyorsan─▒z HEAD , o zaman gerekir ├žal─▒┼čan dizin ve dizin olu┼čturma i├žin devlet git reset --hard HEAD yerine daha, HEAD^ . (Bu tek tip ve ├žift ├žizgi i├žin oldu─ču gibi, bir yaz─▒m hatas─▒ olabilir --hard .)

Bu dosyalar─▒n ni├žin de─či┼čtirilmi┼č olarak g├Âr├╝nd├╝─č├╝ne ili┼čkin ├Âzel sorunuza gelince, muhtemelen s─▒f─▒rlama yerine yumu┼čak s─▒f─▒rlama yapm─▒┼čs─▒n─▒z gibi g├Âr├╝n├╝yor. Bu, HEAD taahh├╝tte de─či┼čtirilmi┼č olan dosyalar─▒n sahnelenmi┼č gibi g├Âr├╝nmesine neden olacakt─▒r ; bu, muhtemelen burada g├Ârd├╝klerinizdir.


5







Yerel git repo'mdaki takip edilmeyen ve de─či┼čtirilen dosyalar ├╝zerinde hi├žbir s─▒f─▒rlama ve temizleme i┼člemi g├Âr├╝nm├╝yor gibi g├Âr├╝n├╝yordu (yukar─▒daki t├╝m se├ženekleri denedim). Bu konuda tek ├ž├Âz├╝m├╝m yerel repoyu y├Ânetip uzaktan kumandadan tekrar klonlamakt─▒.

Neyse ki de─čer verdi─čim ba┼čka dallar yoktu.

xkcd: Git


4







G├Ârd├╝─č├╝m her durumda i┼če yarayan tek ├ž├Âz├╝m, silmek ve geri almak. Belki ba┼čka bir yol vard─▒r, ama a├ž─▒k├žas─▒ bu yol eski devletin orada kalma ┼čans─▒n─▒ b─▒rakmaz, o y├╝zden tercih ederim. Bash tek-liner, git s─▒k s─▒k kar─▒┼č─▒kl─▒k ├ž─▒karsa makro olarak ayarlayabilirsiniz:

 REPO_PATH=$(pwd) && GIT_URL=$(git config --get remote.origin.url) && cd .. && rm -rf $REPO_PATH && git clone --recursive $GIT_URL $REPO_PATH && cd $REPO_PATH
 

* .git dosyalar─▒n─▒z─▒n bozuk olmad─▒─č─▒n─▒ varsayar


0


2017-09-14





Bir ├Âzellik dal─▒ olu┼čturmay─▒ unutmu┼č ve yanl─▒┼čl─▒kla do─črudan efendiye adad─▒n─▒z m─▒?

Olu┼čturma , test ve dosya kilitlemelerini tetiklememek i├žin ├žal─▒┼čma dal─▒n─▒ (yerel dosya sistemi) etkilemeden ├Âzellik dal─▒n─▒ ┼čimdi olu┼čturabilir ve master'─▒ geri ayarlayabilirsiniz :

 git checkout -b feature-branch
git branch -f master origin/master
 

0







Yerel de─či┼čikliklerinizi kaydetmeyi sak─▒ncas─▒ yoksa, yine de havuzunuzu men┼če / HEAD ile e┼čle┼čecek ┼čekilde g├╝ncellemek istiyorsan─▒z, yerel de─či┼čikliklerinizi kolayca saklayabilir ve ard─▒ndan a┼ča─č─▒dakileri yapabilirsiniz:

 git stash
git pull
 

-3



─░lgili yay─▒nlar


Yeni bir yerel ┼čubeyi uzak Git deposuna nas─▒l iter ve onu nas─▒l izlerim?

Yerel bir git ┼čubesini uzak ┼čubeyle nas─▒l kar┼č─▒la┼čt─▒rabilirim?

Ba┼čka bir git s├╝reci bu depoda ├žal─▒┼č─▒yor gibi g├Âr├╝n├╝yor

Yerel Git ┼čubesini uzaktan kumandadaki master dal─▒na nas─▒l itebilirim?

Farkl─▒ yerel Git ┼čubeleri Heroku / master'a nas─▒l g├Ânderilir?

Uzak Git deposundan nas─▒l ├žeker ve yerel depomdaki de─či┼čiklikleri nas─▒l ge├žersiz k─▒labilirim? [├žift]

Yerel Git ┼čubesini farkl─▒ bir ada sahip bir uzaktan kumandaya kolayca nas─▒l zorlayabilirim?

Yerel ┼čube, yerel izleme kolu, uzak ┼čube ve uzaktan izleme kolu aras─▒ndaki farklar nelerdir?

Yerel Git ┼čubesi uzak bir depoya nas─▒l kopyalan─▒r

Uzak github deposundan yerel deponuzdaki de─či┼čiklikleri birle┼čtirme

Etiketle ilgili di─čer sorular [git]


Python'da iki listeyi nas─▒l birle┼čtiririm?

.Bash_profile komut sat─▒r─▒ndan nas─▒l yeniden y├╝klenir?

Bir String uzunlu─čunu al─▒n

Android uygulamamdan ├ž├Âkme verileri nas─▒l elde ederim?

Chrome'daki css ├Âzel d├╝─čmesinden mavi kenarl─▒─č─▒ kald─▒r─▒n

Varsay─▒lan olarak bir radyo d├╝─čmesi nas─▒l se├žilir? [├žift]

PHP'de die () ve exit () aras─▒ndaki farklar nelerdir?

Python'da bir dizgiden boolean'a d├Ân├╝┼čt├╝rme?

Bir ana bilgisayar arac─▒l─▒─č─▒yla harici olarak bir VirtualBox konusuna SSH nas─▒l yap─▒l─▒r? [kapal─▒]

Bir dizindeki t├╝m dosya ve klas├Ârler nas─▒l silinir?