Bagaimana cara "memulai" di GitHub?

14

Saya merencanakan penulisan ulang lengkap proyek saya, menggunakan kerangka kerja lain, dll. Akan menyenangkan untuk menyimpan kode lama termasuk riwayat untuk referensi. Apa cara terbaik untuk melakukan ini, untuk menghindari risiko, kebingungan, dan kejutan?

Gagasan saya adalah membuat cabang baru, ganti semuanya di sana dan dapatkan versi "baru" dasar yang berjalan di sana, beri tag pada master "lama" yang terakhir, dan kemudian gabungkan cabang ke master. Apakah ini masuk akal?

Landei
sumber
18
Pertanyaan ini tampaknya tentang Git, bukan Github.
user253751
Jika Anda tidak berencana mengedit kode lama, hanya ingin melihatnya dengan mudah, Anda dapat menggunakan tag. Tetapi tag seharusnya tidak berubah (tetapi Anda selalu dapat menghapus, menambahkan kembali).
Travis
2
Buat repositori baru.
CodeGnome

Jawaban:

15

Saya memilih untuk menyimpan semuanya dalam satu repositori.

Saya akan:

  1. Buat cabang baru untuk menunjuk ke kode lama Anda
  2. Hapus semua kode dan komit pada master
  3. Mulai penulisan ulang Anda pada master.

Begini caranya:

# checkout the master branch
git checkout master

# create a new branch so you can find the old code easily
git branch oldStuff-KeepingForReference

# push the branch to github
git push origin oldStuff-KeepingForReference

# You currently have the master branch checked out
# so now cd to the project root and start your rewrite: 
cd <your project root>
rm -rf *

# Create a commit of the delete
git add --all *
git commit -m "Fresh start"

# Start your rewrite
echo "Some changes" > file.txt
git add file.txt
git commit -m "This is the first commit of the rewrite"

Selain itu: Anda juga bisa membuat tag dari kode lawas lama, jika Anda tahu Anda tidak akan pernah ingin menambahkan komitmen untuk itu.

Kapan Anda harus membuat repositori baru alih-alih melakukan ini:

  • Ketika repo Anda saat ini sangat besar dan kloning repo lambat. Anda mungkin ingin mempertimbangkan untuk menggunakan repo baru.
sixtyfootersdude
sumber
8

Kecuali ada alasan mendesak untuk menggabungkan penulisan ulang dan cabang-cabang sejarah, saya akan memisahkannya. Buat cabang baru untuk menyimpan kode lama, lakukan penulisan ulang di master, dan pisahkan dengan cara itu. Dengan begitu Anda selalu dapat bekerja dengan kerangka / implementasi lama jika situasinya berubah.

SnoProblem
sumber
3

Itulah gunanya cabang yatim.

git branch -m master new_branch       #rename the branch
git push origin new_branch:new_branch #push the old code
git push origin :master               #delete the origin/master branch containing the old code
git checkout --orphan master          #create a new orphane branch - master. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.

echo foo > file.txt
git add file.txt
git commit -m 'init commit'
git push origin master

Anda mungkin perlu mengaturnew_branch sementara cabang default di Github karena ini menampilkan master secara default.

Jürgen Paul
sumber
2

Anda bisa membuat cabang baru di proyek saat ini, tetapi mungkin lebih baik untuk menandai repositori sebagai pribadi kemudian membuat yang baru untuk kode baru Anda, dengan cara itu Anda masih memiliki repositori lama tetapi tidak ada mengasapi dari pekerjaan yang sudah usang.

Saya sarankan Anda mengambil pendekatan ini daripada mencoba untuk kemudian menggabungkan cabang kembali ke menguasai tidak hanya karena Anda masih akan memiliki mengasapi itu dari kode usang, tetapi juga karena mungkin ada beberapa konflik gabungan frustasi pada saat Anda siap untuk lakukan tarikan. Untuk menghindari itu, yang terbaik adalah memulai dengan cabang yang jelas daripada menggabungkan dua cabang yang sama sekali berbeda.

IIllIIll
sumber