㈠ git獲取歷史版本的幾種方式
我們簡單的描述一個例子:
a)初始化操作
有兩個文件file1.txt和file2.txt
1, 初始化的時候就有首配這兩個文件
操作:
git init
git status
git add .
git mit -m 「init version」
2, 在master分支上修改了file1.txt,並提交
操作:
(修改file1.txt)
git add file1.txt
git mit -m 「change file1」
3, 然後新建分支banana,並切換到banana分支上
操作:
git branch banana
git checkout banana
4, 修改file1.txt和file2.txt,並提交。
操作:
(修改file1.txt和file2.txt)
git add file1.txt file2.txt
git mit -m 「change by banana」
這個時候,我們可以輸入 gitk,查看一下當前的版本情況。
如下圖:git-001
5, 然後,切換到master分支上,修改file2.txt,並提交。
操作:
git checkout master
(修改file2.txt)
git add file2.txt
git mit -m 「change by master」
輸入gitk,查看當前版本情況,如下圖:git-002
b)發現問題需要查看歷史版本
我們現在發現當前的版本有點問題,還不能提交到版本庫。
1,我們需要從git mit中返回.
則輸入:
git reset --soft HEAD^
解釋一下,HEAD是當前分支的最新版本。
^表示父節點。
當前節點的父節點,就是上一次提交的版本。
也就是標記為「change file1」的版本。
問為什麼不是」change by banana」這個版本呢者扒指?不同的分支哦。
」change by banana」是banana分支的最新代碼,和master分支不同的。
這個時候輸入
git status
看看,是不是顯示file2.txt修改了沒有提交呢。
2,我們需要從git add中返回
再仔細查看之後,我們發現file2.txt真的寫錯了,需要返回到此悔git add之前的狀態。
輸入:
git reset -q file2.txt
這個時候,file2.txt就回到了解放前了。
用git status查看一下,file2.txt是」change not staged for mit」狀態。
3,回到沒有做過的情況
我們最終確定,最後一次修改的file2.txt是無用的代碼,我們需要廢棄掉。
注意,這個操作不能恢復的哦。
git reset --hard
這個命令,不能指定具體的文件。
是把當前的修改全部清除,恢復到最後一次提交的版本。
這個時候,用gitk查看一下:git-003
已經徹底回復到了「change file 1」的版本了。
4,直接回復到某個版本
我們現在切換到banana分支。
git checkout banana
然後用gitk看一下。
可以看出,我們之前的操作,對banana分支一點影響也沒有。
現在我們需要把banana分支回復到初始狀態,但是當前的改動的代碼還是需要留著。
我們可以看,init版本是當前版本的父節點的父節點。
我們可以這么操作:
git reset --soft HEAD^^
然後用gitk看一下:git-004
最近的版本已經變成了init version了。
所有的改動都是add未提交狀態。
5,得到當前最新代碼
最後。
我們把file1.txt和file2.txt都刪掉。
我們需要從版本庫中取得當前最新的代碼。
很簡單:
git checkout master
如果是要banana分支的最新代碼,則:
git checkout banana
以上的操作,我們知道了如何查看版本分支,和如何回復到以前的版本。
㈡ Git如何從遠程拉取最新代碼,並與本地代
安裝git,不同系統安裝命令不同
apt-get install git
yum install git
pkg install git
...
本地創建倉庫,在需要的目錄執行命令
git init
不執行這個,會找不到版本地倉庫位置,拉取權了也找不到倉庫存放。
拉取倉庫的代碼
git pull 遠程倉庫地址
發送代碼到遠程有點復雜,不過也挺簡單
發送代碼的時候,本地倉庫里的代碼必須和遠程倉庫里的代碼一樣,因為如果不一樣,那就亂套了,所以要先拉取,覆蓋到本地倉庫,用網頁在遠程倉庫新增或修改文件後,需要拉取代碼覆蓋本地沒修改的,否則遠程倉庫拒絕接受。
添加要發送的文件
git add 文件名稱
(git add .).代表添加所有文件
添加要上傳的文件之後,必須要給文件注釋,否則遠程倉庫拒絕接收。
git commit -m "對文件的解釋信息"
最後就可以發送了
git push 遠程倉庫地址 分支名
弄了2天才弄懂,790431300.github.io