Home | 簡體中文 | 繁體中文 | 雜文 | 打賞(Donations) | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 知乎專欄 | 視頻教程 | About

11.14. FAQ

11.14.1. 導出最後一次修改過的檔案

有時我們希望把剛剛修改的檔案複製出來,同時維持原有的目錄結構,這樣可能交給運維直接覆蓋伺服器上的代碼。我們可以使用下面的命令完成這樣的操作,而不用一個一個檔案的複製。

git archive -o update.zip HEAD $(git diff --name-only HEAD^)
			
11.14.2. 導出指定版本區間修改過的檔案

首先使用git log查看日誌,找到指定的 commit ID號。

			
$ git log
commit ee808bb4b3ed6b7c0e7b24eeec39d299b6054dd0
Author: 168 <lineagelx@126.com>
Date:   Thu Oct 22 13:12:11 2015 +0800

    統計代碼

commit 3e68ddef50eec39acea1b0e20fe68ff2217cf62b
Author: netkiller <netkiller@msn.com>
Date:   Fri Oct 16 14:39:10 2015 +0800

    頁面修改

commit b111c253321fb4b9c5858302a0707ba0adc3cd07
Author: netkiller <netkiller@msn.com>
Date:   Wed Oct 14 17:51:55 2015 +0800

    資料庫連接

commit 4a21667a576b2f18a7db8bdcddbd3ba305554ccb
Author: netkiller <netkiller@msn.com>
Date:   Wed Oct 14 17:27:15 2015 +0800

    init repo
	   		
			

導入 b111c253321fb4b9c5858302a0707ba0adc3cd07 至 ee808bb4b3ed6b7c0e7b24eeec39d299b6054dd0 間修改過的檔案。

$ git archive -o update2.zip HEAD $(git diff --name-only b111c253321fb4b9c5858302a0707ba0adc3cd07)
			
11.14.3. 回撤提交

首先 reset 到指定的版本,根據實際情況選擇 --mixed 還是 --hard

			
git reset --mixed 096392721f105686fc3cdafcb4159439a66b0e5b --
or
git reset --hard 33ba6503b4fa8eed35182262770e4eab646396cd --
			
			
			
git push origin --force --all
or
git push --force --progress "origin" master:master
			
			
11.14.4. 每個項目一個證書

方法一

			
[root@localhost ~]# cat .ssh/config 
host git.netkiller.cn
    user git
    hostname git.netkiller.cn
    port 22
    identityfile ~/.ssh/netkiller
    
host github.com
 HostName github.com
 IdentityFile ~/.ssh/id_rsa_github
 User git    
			
			

方法二

			
$ ssh-agent sh -c 'ssh-add ~/.ssh/id_rsa; git fetch user@host'