<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>git Archives - Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/tag/git/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/tag/git/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Thu, 07 Dec 2023 01:35:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>git Archives - Tomoshare</title>
	<link>https://blog.tomosia.com.vn/tag/git/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cách sử dụng nhiều tài khoản GitHub trên một thiết bị bằng SSH Key</title>
		<link>https://blog.tomosia.com.vn/cach-su-dung-nhieu-tai-khoan-github-tren-mot-thiet-bi-bang-ssh-key/</link>
					<comments>https://blog.tomosia.com.vn/cach-su-dung-nhieu-tai-khoan-github-tren-mot-thiet-bi-bang-ssh-key/#comments</comments>
		
		<dc:creator><![CDATA[admin_tomosia]]></dc:creator>
		<pubDate>Thu, 07 Dec 2023 01:35:34 +0000</pubDate>
				<category><![CDATA[Kinh nghiệm]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=2379</guid>

					<description><![CDATA[<p>Nhu cầu quản lý nhiều tài khoản GitHub trên cùng một thiết bị là điều mà bất kì&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/cach-su-dung-nhieu-tai-khoan-github-tren-mot-thiet-bi-bang-ssh-key/">Cách sử dụng nhiều tài khoản GitHub trên một thiết bị bằng SSH Key</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Nhu cầu quản lý nhiều tài khoản GitHub trên cùng một thiết bị là điều mà bất kì developer nào cũng sẽ cần. Ai cũng có những account Github khác nhau, phục vụ cho những mục đích khác nhau. Ví dụ như một account mail công ty và một account cho mail cá nhân. Dưới đây là kinh nghiệm mà mình đã sử dụng để chuyển đổi giữa 2 account Github của mình. Các bước cấu hình sẽ lần lượt là:</p>



<h2 id="tao-ssh-key" class="wp-block-heading">Tạo SSH key</h2>



<pre class="wp-block-code"><code>ls -al ~/.ssh</code></pre>



<p>Đầu tiên, chúng ta có thể kiểm tra xem liệu chúng ta có bất kỳ SSH key nào hiện có hay không.</p>



<p>Nếu đã có, ta có thể dùng các key đó, còn nếu chưa có key nào cả thì có thể tạo bằng lệnh dưới. </p>



<pre class="wp-block-code"><code>ssh-keygen -t rsa -C "email_cua_ban@work-mail.com" -f "ssh_file_name"</code></pre>



<p>Ví dụ:</p>



<pre class="wp-block-code"><code>ssh-keygen -t rsa -C "bao.van@tomosia.com" -f "id_rsa_work"</code></pre>



<p>Đoạn mã trên sẽ tạo các SSH key và lưu public key có tag <code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">bao.van@tomosia.com</mark></code> vào <code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">~/.ssh/id_rsa_work.pub</mark></code>.</p>



<p>Khi được yêu cầu vị trí lưu SSH key, hãy chấp nhận vị trí mặc định bằng cách nhấn enter. Key private và key public <mark style="background-color:#e9ecef" class="has-inline-color has-black-color"><code><em>~/.ssh/id_rsa_work.pub</em> </code></mark>sẽ được tạo tại vị trí ssh mặc định<mark style="background-color:#e9ecef" class="has-inline-color has-black-color"><code> ~/.ssh/</code></mark>. Chúng ta đã tạo được ssh key cho account phục vụ công việc, tương tự cho email phục vụ mục đích cá nhân. Tôi đặt tên cho ssh key cá nhân là <strong>id_rsa_personal</strong>. Sau khi tạo xong chúng ta sẽ có 2 key dưới:</p>



<pre class="wp-block-code"><code>~/.ssh/id_rsa_personal
~/.ssh/id_rsa_work</code></pre>



<h2 id="them-ssh-key-moi-vao-tai-khoan-github-tuong-ung" class="wp-block-heading">Thêm SSH key mới vào tài khoản GitHub tương ứng</h2>



<p>Chúng ta đã có SSH public key và chúng ta sẽ thêm chúng tài khoản GitHub của mình.</p>



<p>Sao chép public key <code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">pbcopy &lt; ~/.ssh/id_rsa_personal.pub</mark></code> rồi đăng nhập vào tài khoản GitHub cá nhân của bạn:</p>



<ul class="wp-block-list">
<li>Đi tới <em><strong>Setting</strong></em></li>



<li>Chọn <em><strong>SSH Key and GPG</strong></em> từ menu bên trái.</li>



<li>Nhấp vào <em><strong>New SSH Key</strong></em>, cung cấp tiêu đề phù hợp và dán nội dung của SSH key vào editor bên dưới</li>



<li>Nhấp vào <em><strong>Add Key</strong></em> &#8211; <strong>Done</strong>!</li>
</ul>



<p>Đối với tài khoản công việc, hãy sử dụng public key tương ứng (<mark style="background-color:#e9ecef" class="has-inline-color has-black-color"><code>pbcopy &lt; ~/.ssh/id_rsa_work.pub</code></mark>) và lặp lại các bước trên trong tài khoản công việc GitHub của bạn.</p>



<h2 id="dang-ky-ssh-key-voi-ssh-agent" class="wp-block-heading">Đăng ký SSH Key với SSH Agent</h2>



<p>Để sử dụng các key, phải đăng ký chúng với ssh agent trên máy của mình. Đảm bảo ssh-agent đang chạy bằng lệnh<code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color"> eval "$(ssh-agent -s)"</mark></code>.</p>



<p>Thêm private key vào <em><strong>ssh-agent</strong></em> như sau:</p>



<pre class="wp-block-code"><code>ssh-add ~/.ssh/id_rsa_personal
ssh-add ~/.ssh/id_rsa_work</code></pre>



<p>Sau đó, làm cho <strong>ssh-agent </strong>sử dụng các SSH Keys tương ứng cho các SSH Hosts khác nhau bằng cách sử dụng file config cấu hình cho SSH.</p>



<h2 id="tao-tep-cau-hinh-ssh" class="wp-block-heading">Tạo tệp cấu hình SSH</h2>



<p>Tệp cấu hình SSH sẽ có tại <em><code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">~/.ssh/config</mark></code></em>. Chỉnh sửa nó nếu nó tồn tại, nếu không chúng ta có thể tạo nó.</p>



<pre class="wp-block-code"><code>cd ~/.ssh/
touch config           // Creates the file if not exists
nano config            // edit file</code></pre>



<p>Tạo các mục cấu hình cho các tài khoản GitHub có liên quan tương tự như mục bên dưới trong tệp <em><code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">~/.ssh/config</mark></code></em> của bạn:</p>



<pre class="wp-block-code"><code># Personal account
Host github.com
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_personal
   
# Work account
Host github.com-work
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_work</code></pre>



<p><mark style="background-color:#e9ecef" class="has-inline-color has-black-color"><code>work</code></mark> là id người dùng GitHub cho tài khoản công việc.</p>



<p><code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">github.com-work</mark></code> là ký hiệu được sử dụng để phân biệt nhiều tài khoản Git. Đảm bảo bạn nhất quán với ký hiệu tên máy chủ mà bạn sử dụng. Điều này có liên quan khi ta clone một repository hoặc set the remote origin cho repository ở local</p>



<p>Cấu hình trên yêu cầu ssh-agent:</p>



<p>Sử dụng key <code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">id_rsa_personal</mark></code> cho bất kỳ URL Git nào sử dụng <mark style="background-color:#e9ecef" class="has-inline-color has-black-color"><code>@github.com</code></mark></p>



<p>Sử dụng key <mark style="background-color:#e9ecef" class="has-inline-color has-black-color"><code>id_rsa_work</code></mark> cho bất kỳ URL Git nào sử dụng <code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">@github.com-work</mark></code></p>



<p>Như vậy là ta đã hoàn thành xong việc config để sử dụng 2 tài khoản Github. Thử clone một repository hoặc làm việc với một repo ở local nhé.</p>



<h2 id="clone-repository" class="wp-block-heading">Clone Repository</h2>



<p>Khi các cấu hình đã ổn, chúng ta có thể tiếp tục và clone các repository tương ứng. Khi clone, ta chỉ cần sử dụng các Host là github.com cho account personal và github.com-work cho account work. Ví dụ như dưới.</p>



<p>Với account cho công việc: </p>



<pre class="wp-block-code"><code>git clone git@github.com-work:TOMOSIA-VIETNAM/tomogpt.git</code></pre>



<p>Và account cá nhân:</p>



<pre class="wp-block-code"><code>git clone git@github.com:BaoVanPhu/django-learning.git</code></pre>



<p>Thay đổi này được thực hiện tùy thuộc vào <strong>Host</strong> được xác định trong tệp config SSH. Giữa @ và : phải khớp với những gì ta đã cung cấp trong tệp config SSH.</p>



<h2 id="local-repository" class="wp-block-heading">Local Repository</h2>



<h3 id="voi-repository-da-duoc-cloned-truoc-do" class="wp-block-heading">Với repository đã được cloned trước đó:</h3>



<p>Ta chỉ cần update lại remote-url như lệnh dưới</p>



<p>Với account công việc: </p>



<pre class="wp-block-code"><code>git remote set-url origin git@github.com-work:yamatabitabi/ytb-ec-site.git</code></pre>



<p>Tương tự cho account cá nhân 😀</p>



<h3 id="neu-tao-mot-repository-moi-o-local" class="wp-block-heading">Nếu tạo một repository mới ở local:</h3>



<p>Khởi tạo Git trong thư mục dự án <mark style="background-color:#e9ecef" class="has-inline-color has-black-color"><code>git init</code></mark>.</p>



<p>Tạo một repo mới trong tài khoản GitHub rồi  add Git remote vào repo ở local</p>



<pre class="wp-block-code"><code>git remote add origin git@github.com-work:TOMOSIA-VIETNAM/new_repo.git </code></pre>



<p>Sau đó add file và commit rồi push code lên thôi.</p>



<p>Account cá nhân thì như bình thường rồi, không có gì phải bàn =))</p>



<p>Done!</p>



<h2 id="conclusion" class="wp-block-heading">Conclusion</h2>



<p>Đây là những kinh nghiệm mình đã được đọc và config ở laptop của mình. Hi vọng sẽ có ích cho mọi người.</p>



<p>Cảm ơn mọi người đã dành thời gian để đọc. 😀</p>



<p><em>Nguồn: <a href="https://www.freecodecamp.org/news/manage-multiple-github-accounts-the-ssh-way-2dadc30ccaca/" target="_blank" rel="noreferrer noopener">Freecodecamp</a></em></p>
<p>The post <a href="https://blog.tomosia.com.vn/cach-su-dung-nhieu-tai-khoan-github-tren-mot-thiet-bi-bang-ssh-key/">Cách sử dụng nhiều tài khoản GitHub trên một thiết bị bằng SSH Key</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/cach-su-dung-nhieu-tai-khoan-github-tren-mot-thiet-bi-bang-ssh-key/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>Khôi phục commit sau khi git reset &#8211;hard và push &#8211;force! Lấy độc trị độc !</title>
		<link>https://blog.tomosia.com.vn/khoi-phuc-commit-sau-khi-git-reset-hard-va-push-force-lay-doc-tri-doc/</link>
					<comments>https://blog.tomosia.com.vn/khoi-phuc-commit-sau-khi-git-reset-hard-va-push-force-lay-doc-tri-doc/#comments</comments>
		
		<dc:creator><![CDATA[admin_tomosia]]></dc:creator>
		<pubDate>Sun, 08 Oct 2023 17:30:47 +0000</pubDate>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=1007</guid>

					<description><![CDATA[<p>Hí huynh đệ ! Tại hạ là saiury92 đây ! Trong đây có huynh đài nào là fan của truyện&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/khoi-phuc-commit-sau-khi-git-reset-hard-va-push-force-lay-doc-tri-doc/">Khôi phục commit sau khi git reset &#8211;hard và push &#8211;force! Lấy độc trị độc !</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Hí huynh đệ ! Tại hạ là <a rel="noreferrer noopener" href="https://saiury92.github.io/" target="_blank">saiury92 </a>đây ! Trong đây có huynh đài nào là fan của truyện kiếm hiệp Kim Dung không ? Các hạ hãy comment ở bình luận để tại hạ được diện kiến !</p>



<p>Trong thế giới võ hiệp của cố nhà văn Kim Dung, trúng độc có thể nói là nỗi ám ảnh của hầu hết các nhân sĩ khi hành tẩu giang hồ. Bên cạnh đó cũng sinh ra vô vàn phương pháp chữa độc như sử dụng thuốc giải độc, hay là dùng nội công để chữa ! Khi các phương pháp trên đều vô phương cứu chữa, một phương pháp nguy hiểm ngang đánh tài xỉu được sử dụng ! Đó chính là &#8220;<em>Lấy độc trị độc</em>&#8221; . Trong bộ tiểu thuyết Thiên long bát bộ, Đoàn Dự đã bị trúng độc của Lục Mạch Thần Kiếm, chính Huyền Minh Nhị Lão là người đã sử dụng một loại độc khác để trung hòa độc của Lục Mạch Thần Kiếm.</p>



<p>Vâng ! Quay về thực tại ! Bạn đã bao giờ bị thằng làm cùng, nó vừa code nó vừa chửi &#8220;<em>Đ* M* ! Thằng nào push code làm mất m* commit của bố mày rồi !</em>&#8220;. Có thể lúc đó bạn đã vô tình <mark style="background-color:#e9ecef" class="has-inline-color">git reset &#8211;hard</mark> hay chỉ là nhỡ tay <mark style="background-color:#e9ecef" class="has-inline-color">push &#8211;force</mark> lên thôi ! Làm đ*o gì mà căng !</p>



<p>Hôm nay, tại hạ xin hướng dẫn các vị huynh đài, sử dụng phương pháp lấy độc trị độc, dùng chính <mark style="background-color:#e9ecef" class="has-inline-color">git reset &#8211;hard</mark> và <mark style="background-color:#e9ecef" class="has-inline-color">push &#8211;force</mark> để khôi phục lại commit đã mất !</p>



<h4 id="bai-toan" class="wp-block-heading"><strong>Bài toán ?</strong></h4>



<p>Tại hạ đang có 3 commit, lỡ tay <mark style="background-color:#e9ecef" class="has-inline-color">git reset &#8211;hard</mark> và <mark style="background-color:#e9ecef" class="has-inline-color">push &#8211;force</mark> lên còn có 1 commit !</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="6c01759 (HEAD -&gt; master, origin/master) Commit 3
842ed8d Commit 2
786ca7f Commit 1

&gt; git reset --hard 786ca7f &amp; git push --force origin master

786ca7f (HEAD -&gt;  master, origin/master) Commit 1" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #50FA7B">6c01759</span><span style="color: #F8F8F2"> (HEAD -</span><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">master,</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">origin/master</span><span style="color: #F8F8F2">) Commit 3</span></span>
<span class="line"><span style="color: #50FA7B">842ed8d</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">Commit</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">2</span></span>
<span class="line"><span style="color: #50FA7B">786ca7f</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">Commit</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1</span></span>
<span class="line"></span>
<span class="line"><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> git reset --hard 786ca7f &amp; </span><span style="color: #50FA7B">git</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">push</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">--force</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">origin</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">master</span></span>
<span class="line"></span>
<span class="line"><span style="color: #50FA7B">786ca7f</span><span style="color: #F8F8F2"> (HEAD -</span><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2">  </span><span style="color: #F1FA8C">master,</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">origin/master</span><span style="color: #F8F8F2">) Commit 1</span></span></code></pre></div>



<h4 id="lay-doc-tri-doc" class="wp-block-heading"><strong>Lấy độc trị độc ?</strong></h4>



<p>Sử dụng <mark style="background-color:#e9ecef" class="has-inline-color has-black-color">git reflog</mark> hiển thị tất cả các commit, bao gồm cả những commit đã bị xóa ! Lưu ý: <mark style="background-color:#e9ecef" class="has-inline-color">git log</mark> chỉ hiển thị những commit hiện tại.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="786ca7f (HEAD -&gt; master, origin/master) HEAD@{0}: reset: moving to 786ca7f # log when git reset
6c01759 HEAD@{1}: commit: Commit 3 # commit cần khôi phục
842ed8d HEAD@{2}: commit: Commit 2
786ca7f (HEAD -&gt; master) HEAD@{3}: commit (initial): Commit 1" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #50FA7B">786ca7f</span><span style="color: #F8F8F2"> (HEAD -</span><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">master,</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">origin/master</span><span style="color: #F8F8F2">) HEAD@{</span><span style="color: #50FA7B">0}:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">reset:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">moving</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">to</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">786</span><span style="color: #F1FA8C">ca7f</span><span style="color: #F8F8F2"> </span><span style="color: #6272A4"># log when git reset</span></span>
<span class="line"><span style="color: #50FA7B">6c01759</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">HEAD@{</span><span style="color: #BD93F9">1</span><span style="color: #F1FA8C">}:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">commit:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">Commit</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">3</span><span style="color: #F8F8F2"> </span><span style="color: #6272A4"># commit cần khôi phục</span></span>
<span class="line"><span style="color: #50FA7B">842ed8d</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">HEAD@{</span><span style="color: #BD93F9">2</span><span style="color: #F1FA8C">}:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">commit:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">Commit</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">2</span></span>
<span class="line"><span style="color: #50FA7B">786ca7f</span><span style="color: #F8F8F2"> (HEAD -</span><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">master</span><span style="color: #F8F8F2">) HEAD@{</span><span style="color: #50FA7B">3}:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">commit</span><span style="color: #F8F8F2"> (initial): Commit 1</span></span></code></pre></div>



<p>Các hạ sẽ thấy được hành vi <mark style="background-color:#e9ecef" class="has-inline-color">git reset</mark> được log lại ! Tìm SHA của commit ngay trước hành vi reset để rollback ! Sử dụng chính <mark style="background-color:#e9ecef" class="has-inline-color">git reset &#8211;hard </mark> khôi phục commit:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="&gt; git reset --hard 6c01759

6c01759 (HEAD -&gt; master) Commit 3
842ed8d Commit 2
786ca7f Commit 1" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> git reset --hard 6c01759</span></span>
<span class="line"></span>
<span class="line"><span style="color: #50FA7B">6c01759</span><span style="color: #F8F8F2"> (HEAD -</span><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">master</span><span style="color: #F8F8F2">) Commit 3</span></span>
<span class="line"><span style="color: #50FA7B">842ed8d</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">Commit</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">2</span></span>
<span class="line"><span style="color: #50FA7B">786ca7f</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">Commit</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1</span></span></code></pre></div>



<p>Push lại commit đã khôi phục:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="&gt; git push --force origin master

6c01759 (HEAD -&gt; master, origin/master) Commit 3
842ed8d Commit 2
786ca7f Commit 1" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> git push --force origin master</span></span>
<span class="line"></span>
<span class="line"><span style="color: #50FA7B">6c01759</span><span style="color: #F8F8F2"> (HEAD -</span><span style="color: #FF79C6">&gt;</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">master,</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">origin/master</span><span style="color: #F8F8F2">) Commit 3</span></span>
<span class="line"><span style="color: #50FA7B">842ed8d</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">Commit</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">2</span></span>
<span class="line"><span style="color: #50FA7B">786ca7f</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">Commit</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1</span></span></code></pre></div>



<p>Dễ quá phải không các vị huynh đệ ! Cổ nhân xưa có câu không làm thì không có lỗi ! Vì vậy các huynh đệ tránh sử dụng <mark style="background-color:#e9ecef" class="has-inline-color">git reset &#8211;hard</mark> và <mark style="background-color:#e9ecef" class="has-inline-color">push &#8211;force</mark> khi nào cờ bí thì mới lôi ra sài thui ! Cảm ơm các vị huynh đài đã nghe xàm xí ! Thân ái và hẹn gặp lại !</p>
<p>The post <a href="https://blog.tomosia.com.vn/khoi-phuc-commit-sau-khi-git-reset-hard-va-push-force-lay-doc-tri-doc/">Khôi phục commit sau khi git reset &#8211;hard và push &#8211;force! Lấy độc trị độc !</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/khoi-phuc-commit-sau-khi-git-reset-hard-va-push-force-lay-doc-tri-doc/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
	</channel>
</rss>
