㈠ 【學了就忘】Git操作 — 14.Git基本操作(一)
要對現有的某個項目開始使用Git管理,只需到此項目所在的根目錄,執行 git init 命令即可。
准備一個新的Git本地版本庫:
說明:初始化Git倉庫後,在當前目錄下會出現一個名為 .git 的目錄,所有Git需要的數據和資源都存放在這個目錄中。
不過目前,僅僅是按照既有的結構框架,初始化好了Git倉庫中所有的文件和目錄,但我們還沒有開始跟蹤管理項目中的任何一個文件。
使用 git status 命令進行查看。
進入本地版本庫查看工作區、暫存區中文件的狀態。
1)創建文件後查看工作區、暫存區中文件的狀態
我們在倉庫目錄中創建一個 readme.txt 文件後,在執行 git status 命令。
說明:
2)將工作區的文件添加到暫存區
執行 git add 命令,將 readme.txt 文件添加到暫存區。
3)再次查看工作區、暫存區狀態
執行 git status 命令查看工作區、暫存區狀態。
說明:
總結:
只要在 "Changes to be committed" 這行下面顯示的文件,就說明是已暫存狀態。
如果此時提交,那麼該文件此時此刻的版本,將被留存在歷史記錄中。
在 git add 命令後面可以指明要跟蹤的文件或目錄路徑。
如果是目錄的話,就說明要遞歸跟蹤該目錄下的所有文件。(其實 git add 命令的潛台詞就是把目標文件快照放入暫存區域,同時未曾跟蹤過的文件標記為已跟蹤。)
4)將文件從暫存區撤回到工作區
執行 git rm --cached 命令,將 readme.txt 文件從暫存區撤回到工作區。
並執行 git status 命令查看工作區、暫存區狀態。
可以看到結果, readme.txt 文件又成為了一個未被Git追蹤的文件。
㈡ Git工作流程和常用命令分享
git是一個分布式版本控制軟體,最初由林納斯·托瓦茲創作,於2005年以GPL發布。最初目的是為更好地管理Linux內核開發而設計。林納斯·托瓦茲在編寫第一個版本時就使用了「git」這個名稱, 他將工具描述為「愚蠢的內容跟蹤器」。
[圖片上傳失敗...(image-c23291-1619063471664)]
四個專有名詞:
Workspace:工作區
Index / Stage:暫存區
Repository:倉庫區(或本地倉庫)
Remote:遠程倉庫
打開本地生成的.git隱藏文件
創建新項目gittest
創建新文件test.txt
git add <file>
git status顯示有變更的文件
git restore <file> 撤迴文件修改內容
git commit –m 「注釋」
修改內容-> 執行git diff工作區和本地倉庫的差異
git log顯示當前分支的版本歷史
git reset --hard HEAD^ 當前版本回退到上一個版本
git reset --hard HEAD^ ^ 當前版本回退到上上一個版本
git reset --hard HEAD~100 回退到前100個版本
恢復已經刪除的版本
git reflog 展示所有的提交記錄
git reset --hard <版本號> 回退到指定版本
git push origin master 將本地master分支推送到遠程master分支,相當於創建遠程分支
git checkout -b dev = git branch dev + git checkout dev 創建並切換分支
git branch 不帶參數,會列出所有本地的分支;帶參數表示創建分支
git branch –d name 刪除本地分支(-D表示強制刪除)
git branch –r 不帶參數,會列出所有遠程的分支
git branch --set-upstream-to=origin/<branch本地> 本地和遠程分支關聯
git push origin –delete <branch> 刪除遠程分支
git merge release用於合並指定分支到當前分支上
註:Fast-forward表示的合並是「快進模式」,也就是直接把master指向dev的當前提交,所以合並速度非常快。在這種模式下,刪除分支後,會丟掉分支日誌信息。可以使用帶參數 --no-ff來禁用」Fast forward」模式。
git merge --no-ff -m 「注釋」dev
git checkout release 切換release分支
vim test.txt 修改某條內容
git commit test.txt -m 「release修改某條內容」
git checkout master 切換master分支
vim test.txt 修改某條同release內容
git commit test.txt -m 「master修改某條內容」
git merge release 顯示沖突
git status 顯示沖突提示
Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,其中>>>>release 是指release上修改的內容
vim test.txt 修改內容
git add test.txt
git commit -a -m 「fix conflict」
當前分支有沒有提交但也不合適現在就提交的內容,Git提供了暫儲功能stash
git checkout release
vim test.txt 修改test.txt內容
git checkout develop 此時會提示Aborting
git status 查看當前狀態
Git stash list 查看所有暫儲列表
git stash apply恢復,恢復後stash內容並不刪除,你需要使用命令git stash drop來刪除;
另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了
創建Git Tag並推送遠程伺服器
git tag -a V1.0.0 –m「注釋」 //創建TAG
git push origin V1.0.0 //推送到遠程伺服器
git push origin --tag //提交所有tag至伺服器
git tag -d V1.0.0 //刪除本地標簽
git push origin --delete tag <tagname> //刪除遠程標簽
HEAD,它始終指向當前所處分支的最新的提交點。你所處的分支變化了,或者產生了新的提交點,HEAD就會跟著改變
add相關命令很簡單,主要實現將工作區修改的內容提交到暫存區,交由git管理。
git add .添加當前目錄的所有文件到暫存區
git add 添加指定目錄到暫存區,包括子目錄
git add 添加指定文件到暫存區
commit相關命令也很簡單,主要實現將暫存區的內容提交到本地倉庫,並使得當前分支的HEAD向後移動一個提交點。
git commit -m 提交暫存區到本地倉庫,message代表說明信息
git commit --amend -m 使用一次新的commit,替代上一次提交
上傳本地倉庫分支到遠程倉庫分支,實現同步。
git push 上傳本地指定分支到遠程倉庫
git push --force強行推送當前分支到遠程倉庫,即使有沖突
git push --all推送所有分支到遠程倉庫
關於分支,大概有展示分支,切換分支,創建分支,刪除分支這四種操作。
git branch列出所有本地分支
git branch -r列出所有遠程分支
git branch -a列出所有本地分支和遠程分支
git branch 新建一個分支,但依然停留在當前分支
git checkout -b 新建一個分支,並切換到該分支
git checkout 切換到指定分支,並更新工作區
git branch -d 刪除分支
git push origin --delete 刪除遠程分支
關於分支的操作雖然比較多,但都比較簡單好記
merge命令把不同的分支合並起來。在實際開放中,我們可能從master分支中切出一個分支,然後進行開發完成需求,中間經過R3,R4,R5的commit記錄,最後開發完成需要合入master中,這便用到了merge。
git merge 合並指定分支到當前分支
註:如果在merge之後,出現conflict,主要是因為兩個用戶修改了同一文件的同一塊區域。需要針對沖突情況,手動解除沖突。
rebase又稱為衍合,是合並的另外一種選擇。
在開始階段,我們處於new分支上,執行git rebase dev,那麼new分支上新的commit都在dev分支上重演一遍,最後checkout切換回到new分支。這一點與merge是一樣的,合並前後所處的分支並沒有改變。
git rebase dev,通俗的解釋就是new分支想站在dev的肩膀上繼續下去。
rebase操作不會生成新的節點,是將兩個分支融合成一個線性的提交。
rebase也需要手動解決沖突。
1.如果你想要一個干凈的,沒有merge commit的線性歷史樹,那麼你應該選擇git rebase
2.如果你想保留完整的歷史記錄,並且想要避免重寫commit history的風險,你應該選擇使用git merge
reset命令把當前分支指向另一個位置,並且相應的變動工作區和暫存區。
git reset —soft 只改變提交點,暫存區和工作目錄的內容都不改變
git reset —mixed 改變提交點,同時改變暫存區的內容
git reset —hard 暫存區、工作區的內容都會被修改到與提交點完全一致的狀態
git revert用一個新提交來消除一個歷史提交所做的任何修改。
在回滾這一操作上看,效果差不多。git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
在 Git工作區的根目錄創建一個特殊的.gitignore文件。
在.gitignore文件中,添加需要忽略的文件。
git rm -r --cached . //將倉庫中的index遞歸刪除
git add . //重新添加倉庫索引
git commit -m 「update git.ignore」 //提交
git branch --set-upstream-to=origin/<branch> <branch> //重現將本地倉庫和遠程倉庫關聯
最後,如果此篇博文對你有所幫助,別忘了點個贊喲~
㈢ Git基本操作
安裝完 Git 軟體後,需要我們做一下全局的配置工作,如:用戶名、郵箱等。
命令:git config
設置用戶名命令:
設置郵箱命令:
其中, --global 指定為全局配置,不指定該參數,則為當前所在倉庫配置。
查看配置:
在本地創建版本庫,需要使用 git init 命令。
首先,我們需要新建一個存放版本庫的文件夾,然後進入到該目錄所在路徑,執行如下命令,格式為:
最後查看文件夾,可以看到包含有 .git 子文件夾,說明創建版本庫成功了。
也可以在執行 git init 命令時指定一個文件夾作為版本庫。格式為:
克隆版本庫是指從現有 Git 版本庫中拷貝項目。
克隆版本庫使用如下命令,格式為:
如果我們需要克隆到指定的目錄,可以使用以下命令格式:
如:克隆遠程倉庫
添加一個或多個文件到暫存區:
添加指定目錄到暫存區,包括子目錄:
添加當前目錄下的所有文件到暫存區:
查看在我們上次提交之後是否有對文件進行再次修改。 格式為:
-s參數可以幫助我們獲得比較簡短的顯示結果。
如:我們在一個版本庫中所在目錄中增加一個 Unit1.pas 文件,然後執行如下命令:
顯示暫存區和工作區的差異:
顯示暫存區和上一次提交(commit)的差異:
顯示兩次提交之間的差異:
將暫存區內容添加到本地倉庫中。
提交暫存區到本地版本庫中:
message 可以用於描述提交的信息。
提交暫存區的指定文件到版本庫區:
修改後直接提交:
-a參數設置修改文件後不需要執行 git add 命令,直接來提交。
如:我們在上面的命令基礎上進行提交
接下來,我們對 Unit1.pas 文件進行修改,然後進行文件比較:
git reset 命令用於回退版本,可以指定退回某一次提交的版本。
git reset 命令語法格式如下:
可以使用 數字表示
git rm 命令用於刪除文件。
如果只是簡單地從工作目錄中手工刪除文件,運行 git status 時就會在 Changes not staged for commit 的提示。所以,在 git 環境下一定要使用 git 的刪除文件操作。
git rm 刪除文件有以下幾種形式:
將文件從暫存區和工作區中刪除:
如果刪除之前修改過並且已經放到暫存區域的話,則必須要用強制刪除選項 -f 。
如果想把文件從暫存區域移除,但仍然希望保留在當前工作目錄中,換句話說,僅是從跟蹤清單中刪除,使用 --cached 選項即可:
可以遞歸刪除,即如果後面跟的是一個目錄做為參數,則會遞歸刪除整個目錄中的所有子目錄和文件:
git mv 命令用於移動或重命名一個文件、目錄或軟連接。
如果新文件名已經存在,但還是要重命名它,可以使用 -f 參數:
㈣ git常用命令是什麼
1、在當前目錄新建一個Git代碼庫,:$ git init
2、新建一個目錄,將其初始化為Git代碼庫,:$ git init [project-name]
3、下載一個項目和它的整個代碼歷史,:$ git clone [url]
4、顯示當前的Git配置,:$ git config --list
5、編輯Git配置文件,:$ git config -e [--global]
6、設置提交代碼時的用戶信息,:$ git config [--global] user.name "[name]",:$ git config [--global] user.email "[email address]"
7、添加指定文件到暫存區,:$ git add [file1] [file2] ...
8、添加指定目錄到暫存區,包括子目錄,:$ git add [dir]
9、添加當前目錄的所有文件到暫存區,:$ git add .
10、對於同一個文件的多處變化,可以實現分次提交,:$ git add -p
11、刪除工作區文件,並且將這次刪除放入暫存區,:$ git rm [file1] [file2] ...
12、停止追蹤指定文件,但該文件會保留在工作區,:$ git rm --cached [file]
13、改名文件,並且將這個改名放入暫存區,:$ git mv [file-original] [file-renamed]
14、提交暫存區到倉庫區,:$ git commit -m [message]
15、提交暫存區的指定文件到倉庫區,:$ git commit [file1] [file2] ... -m [message]
16、提交工作區自上次commit之後的變化,直接到倉庫區,:$ git commit -a
17、提交時顯示所有diff信息,:$ git commit -v
18、使用一次新的commit,替代上一次提交
19、 如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息,:$ git commit --amend -m [message]
20、重做上一次commit,並包括指定文件的新變化,:$ git commit --amend [file1] [file2]
(4)git常用命令總結擴展閱讀:
git有以下功能:
1、從伺服器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。
2、在自己的機器上根據不同的開發目的,創建分支,修改代碼。
3、在單機上自己創建的分支上提交代碼。
4、在單機上合並分支。
5、把伺服器上最新版的代碼fetch下來,然後跟自己的主分支合並。
6、生成補丁(patch),把補丁發送給主開發者。
7、看主開發者的反饋,如果主開發者發現兩個一般開發者之間有沖突(他們之間可以合作解決的沖突),就會要求他們先解決沖突,然後再由其中一個人提交。如果主開發者可以自己解決,或者沒有沖突,就通過。
8、一般開發者之間解決沖突的方法,開發者之間可以使用pull 命令解決沖突,解決完沖突之後再向主開發者提交補丁。
㈤ git基本命令ls、cat、mv、touch簡述
1. 命令含義:List directory contents,用來顯示目錄或具體文件列表。
2. 主要用法示例:
1. 命令含義:Print and concatenate files,列印、合並文件。
2. 主要用法示例:
1. 命令含義:Move or rename files and directories,移動或重命名文件和目錄。
2. 主要用法示例:
1. 命令含義:用於修改文件或者目錄的時間屬性,包括存取時間和更改時間。若文件不存在,系統會建立一個新的空白文件。
2. 主要用法示例:
該網站幾乎能夠查詢所有Linux命令的含義,其界面如下圖:
㈥ git常用操作
如果不用"pick"或者"edit",而是指定"squash",Git 會同時應用那個變更和它之前的變更並將提交說明歸並。因此,如果想將這三個提交合並為單一提交, 可以將腳本修改成這樣
保存並退出編輯器,Git 會應用全部三次變更然後將送回編輯器來歸並三次提交說明。
然後保存,就會擁有包含前三次提交的全部變更的單一提交 。
註:最頂行pick 不能修改為squash
當你正在進行項目中某一部分的工作,裡面的東西處於一個比較雜亂的狀態,而你想轉到其他分支上進行一些工作。問題是,你不想提交進行了一半的工作,否則以後你無法回到這個工作點。解決這個問題的辦法就是 git stash 命令。
「『儲藏」「可以獲取工作目錄的中間狀態——也就是修改過的被追蹤的文件和暫存的變更——並將它保存到一個未完結變更的堆棧中,隨時可以重新應用。
當追准備切換分支,但是還不想提交你正在進行中的工作;所以儲藏這些變更。為了往堆棧推送一個新的儲藏,只要運行? git stash :
這時,你可以方便地切換到其他分支工作;你的變更都保存在棧上。要查看現有的儲藏,你可以使用? git stash list :
git stash apply :重新應用你剛剛實施的儲藏
git stash apply stash@{number} :應用更早的儲藏
只需回到需要合並的源分支,運行 git merge 命令指定要合並進來的分支即可;Git 作了合並,但沒有提交,它會停下來等你解決沖突。要看看哪些文件在合並時發生沖突,可以用 git status 觀察
任何包含未解決沖突的文件都會以未合並(unmerged)的狀態列出。Git 會在有沖突的文件里加入標準的沖突解決標記,可以通過它們來手工定位並解決這些沖突。可以看到此文件包含類似下面這樣的部分:
可以看到 ======= 隔開的上半部分,是? HEAD (即 master 分支,在運行 merge 命令時所切換到的分支)中的內容,下半部分是在 iss53 分支中的內容。解決沖突的辦法無非是二者選其一或者親自整合到一起。比如可以通過把這段內容替換為下面這樣來解決:
在解決了所有文件里的所有沖突後,運行? git add ?將把它們標記為已解決狀態(譯註:實際上就是來一次快照保存到暫存區域。)
pull時為了防止更改後pull Feiled的出現,先執行commit,stash or revert。
㈦ Git常用命令--(ls,cat,mv,touch)
描述:列出有關文件的信息(默認為當前目錄)。如果沒有指定-cftuvSUX或——Sort,則按字母順序排序。
-a 列出所有文件,包括隱藏文件和以「.」開頭的文件;
-d 列出目錄本身;
-l 列出條目的詳細信息;
-r 以反序排列;
-t 按時間排列;
-h 顯示的文件大小按人類可讀的方式;
-R 遞歸處理子目錄 ;
-X 以文件名的後綴排序;
-S 按文件大小排序
ls
列出當前目錄下的所有文件,這個用的最多。
ls -al
列出所有文件(包括隱藏文件和以「.」開頭的文件),及其詳細信息;
ls - lt
列出所有文件詳細信息,並按時間排序,時間最近的靠前。
描述:連接和查看文本文件
-n 從1開始對所有輸出行進行編號;
-b 和n相似,但是空行不編號;
-s 遇到連續空行時合並為一行;
cat file1
列印文件內容
cat file1 file2 > file3
合並文件1和2的內容輸出到文件3,如果文件3存在則覆蓋
cat -n file1 >> file2
把文件1的內容按行編號後追加到文件2
描述:用來移動文件或者重命名
-b 若需覆蓋文件,則覆蓋前先備份;
-f 如果目標文件存在,強制覆蓋;
-i 若目標文件存在,詢問是否覆蓋;
-t 移動多個源文件到一個目錄,使用中目標目錄寫在前,源文件在後
mv aa.txt bb.txt
將文件aa.txt改名為bb.txt;
mv aa.txt demo
將文件aa.txt移動到目錄demo中;
mv aa.txt bb.txt dir1; mv -t ~/Desktop/demo-1/dir2 aa.txt bb.txt
先將文件aa.txt和bb.txt移動到目錄dir1,然後再將文件aa.txt和bb.txt移動到目錄dir2中;
mv dir1 dir2
如果目錄dir2不存在,將目錄dir1改名為dir2;如果dir2存在,將dir1移動到dir2
描述:用來新建一個文件,或者修改已存在文件的時間戳
-a 只更改存取時間;
-c 不建立任何文檔;
-d 使用指定的日期時間;
touch aa.txt bb.txt
創建文件aa.txt和bb.txt
touch -c cc.txt
如果cc.txt不存在就不更改時間戳也不建立cc.txt
touch -r bb.txt
更新bb.txt的時間戳
Git命令和參數都很多,需要慢慢學。可以使用Git的 --help命令查看詳細用法,如輸入cat --help,查看cat命令的參數及使用方法。也可以使用網站explainshell.com,輸入各種組合參數的命令來查詢,每一個參數都會有解釋。
㈧ 常用 Git 命令匯總
下面是我整理的常用 Git 命令清單。幾個專用名詞的譯名如下:
Workspace:工作區
Index / Stage:暫存區
Repository:倉庫區(或本地倉庫)
Remote:遠程倉庫
導航目錄:
1、新建
2、配置
3、幫助
4、狀態
5、信息
6、添加
7、刪除
8、分支
9、檢出
10、遠程同步
11、撤銷
12、commit
13、diff
14、grep
15、log
16、merge
17、mv
18、tag
19、pull
20、ci
21、rebase (謹慎使用)
22、reset (謹慎使用)
23、其他
㈨ git的常用的幾個命令
1.安裝Git
Linux
Window:到Git官網下載安裝:https://git-scm.com/downloads
2.配置全局用戶Name和E-mail
3.初始化倉庫
4.添加文件到Git倉庫
提示:可反復多次使用,添加多個文件;
5.提交添加的文件到Git倉庫
然後會彈出一個Vim編輯器輸入本次提交的內容;
或者
6.查看倉庫當前的狀態
7.比較當前文件的修改
8.查看歷史提交記錄
或者加上參數查看就比較清晰了
9.回退版本
說明:在Git中,用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,以此類推,如果需要回退幾十個版本,寫幾十個^容易數不過來,所以可以寫,例如回退30個版本為:HEAD~30。
如果你回退完版本又後悔了,想回來,一般情況下是回不來的,但是如果你可以找到你之前的commit id的話,也是可以的,使用如下即可:
提示:commit id不需要寫全,Git會自動查找;
補充說明:Git中,commit id是一個使用SHA1計算出來的一個非常大的數字,用十六進製表示,你提交時看到的一大串類似3628164...882e1e0的就是commit id(版本號);
在Git中,版本回退速度非常快,因為Git在內部有個指向當前版本的HEAD指針,當你回退版本的時候,Git僅僅是把HEAD從指向回退的版本,然後順便刷新工作區文件;
10.查看操作的歷史命令記錄
結果會將你之前的操作的commit id和具體的操作類型及相關的信息列印出來,這個命令還有一個作用就是,當你過了幾天,你想回退之前的某次提交,但是你不知道commit id了,通過這個你可查找出commit id,就可以輕松回退了,用一句話總結:穿越未來,回到過去,so easy!
11.diff文件
說明:查看工作區和版本庫裡面最新版本文件的區別,也可以不加HEAD參數;
12.丟棄工作區的修改
說明:適用於工作區修改沒有add的文件
13.丟棄暫存區的文件
說明:適用於暫存區已經add的文件,注意執行完此命令,他會將暫存區的修改放回到工作區中,如果要想工作區的修改也丟棄,就執行第12條命令即可;
14.刪除文件
然後提交即可;
如果不小心刪錯了,如果還沒有提交的話使用下面命令即可恢復刪除,注意的是它只能恢復最近版本提交的修改,你工作區的修改是不能被恢復的!