git, svn, mercurial

Neo

The Good Doctor
Sugar daddy
Joined
Oct 16, 2005
Messages
10,668
Păi depinde ce probleme au fost ridicate de colaboratorii proiectului, nu există magic bullet. Dacă sunt probleme cu codul, oamenii de obicei sugerează schimbări la care poți da tu commit direct. Din experiența personală, dacă vrei un pull request curat de obicei faci o listă cu schimbările, ștergi pull request și refaci tot după ce clonezi din nou și faci schimbările respective.

Rebase mi se pare can of worms până acum, este mai simplu să ștergi pull request și s-o iei de la capăt cumva.

Un link la pull request ar ajuta să fii ajutat.
 

Thor

Membru Junior
Joined
Dec 6, 2004
Messages
2,117
Use the force (`--force`).

Tu ai actualizat commit-urile, în branch-ul tău și trebuie să reactualizezi ceea ce ai împins în repo.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
5,249
git. Am facut ordine intr-un fisier. Linii mutate, spatii=>tab-uri, adaugat comentarii, etc. etc. Cand fac commit, diff-ul arata ca naiba. Nu se mai intelege absolut nimic din el.
Exista vreo posibilitate ca acel commit sa arate varianta veche a fisierului ca pe un fisier sters in intregime si varianta noua ca pe un fisier nou creat, in loc sa faca un diff?
 

LNT

Meşter Strică-Tot
Sugar daddy
Joined
Mar 31, 2007
Messages
3,337
Pai...il stergi si il adaugi din nou.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
5,249
Nope.
1) backup fisier
2) git rm
3) copiat la loc fisierul
4) git add
5) git commit
6) git rebase -i cu fixup
=> acelasi rezultat.
 

Thor

Membru Junior
Joined
Dec 6, 2004
Messages
2,117
Faci backup fișierului modificat, faci unstage, apoi `git rm`...
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
5,249
Vreau sa folosesc git pentru cateva fisiere din /etc, /sbin, /root, dar vreau ca directoarele si fisierele pe care le creaza git sa fie altundeva decat in root. Root trebuie sa ramana necontaminat.
Am citit despre --git-dir si --work-tree dar n-am inteles mare lucru.
Help?
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,568
Păi git-dir îi zice unde e directorul .git și work-tree îi zice unde sunt fișierele efectiv. Of course, ca să nu omori git-ul cu tot filesystem-ul probabil va trebui să faci un .gitignore mare (în root), pentru că va trebui să folosești --work-tree=/

Code:
miahi@MIAHI-P53 MINGW64 /e/tmp
$ mkdir test1

miahi@MIAHI-P53 MINGW64 /e/tmp
$ mkdir test2

miahi@MIAHI-P53 MINGW64 /e/tmp
$ git --git-dir=/e/tmp/test1/.git --work-tree=/e/tmp/test2 init
Initialized empty Git repository in E:/tmp/test1/.git/

miahi@MIAHI-P53 MINGW64 /e/tmp
$ touch test2/blabla.txt

miahi@MIAHI-P53 MINGW64 /e/tmp
$ git --git-dir=/e/tmp/test1/.git --work-tree=/e/tmp/test2 add .

miahi@MIAHI-P53 MINGW64 /e/tmp
$ git --git-dir=/e/tmp/test1/.git --work-tree=/e/tmp/test2 status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   blabla.txt

miahi@MIAHI-P53 MINGW64 /e/tmp
$ git --git-dir=/e/tmp/test1/.git --work-tree=/e/tmp/test2 commit -m "blabla"
[master (root-commit) 2f0af14] blabla
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 blabla.txt

miahi@MIAHI-P53 MINGW64 /e/tmp
$ git --git-dir=/e/tmp/test1/.git --work-tree=/e/tmp/test2 status
On branch master
nothing to commit, working tree clean

miahi@MIAHI-P53 MINGW64 /e/tmp
$ git --git-dir=/e/tmp/test1/.git --work-tree=/e/tmp/test2 log
commit 2f0af14f5fb036a16ca76211d7797993bb02fd9b (HEAD -> master)
Author: miahi <me@miahi.ro>
Date:   Tue Jun 21 11:55:55 2022 +0300

    blabla

Vezi și etckeeper.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
5,249
Cam asta e partea care n-am inteles-o. git-dir zice doar despre .git, nu si celelalte fisiere ale git-ului. Cum fac sa nu am nici .gitignore, nici .gitattributes, nici nimic altceva git* in root?
 
Top Bottom