Git 常用命令

Git 簡介

  • 一個開源的分布式版本控制系統
  • 版本控制?比如我在 A1A2A3A4 處分別修改了文件,那我可以隨時隨地回到任意 AX

Git 安裝和配置(windows)

  • 下載安裝exe,官網太慢,所以建議用淘寶鏡像
  • 安裝完畢,找到 Git -> Git Bash ,打開
  • 全局配置用戶名和郵箱
    • $ git config --global user.name "Your Name"
    • $ git config --global user.email "email@example.com"
    • 局部配置把 --global 去掉即可

Git 的 工作區 、 暫存區、 master

工作區即打代碼的地方,暫存區又叫stage,index用來暫時存放工作區中修改的內容,就是一個中轉站,master是項目主分支,HEAD是指針



我最常用的命令

git add .
git commit -m 'update'
git push origin master
git fetch origin master

如果 fetch 合并遠程庫報錯,提示 error: Your local changes to the following files would be overwritten by merge 說明文件有改變,解決:

  • 如果想改變本地庫,保留遠程庫,執行 $ git reset --head ,徹底回退上一個版本,使用 $ git pull 將遠程庫覆蓋本地庫
  • (未測試過)如果想保留遠程庫的修改,只將本地庫的新內容添加至遠程庫,執行 $ git stash,$ git pull,$ git stash pop

Git 常用命令

文件夾中打開Git方式: 文件夾中右鍵 -> Git Bash Here

  1. 初始化

    • $ git init 初始化,將這個目錄變成Git可管理的倉庫 ,.git文件夾 - 用來跟蹤管理版本庫
    • ?windows系統自帶的記事本在開頭添加了0xefbbbf字符(16進制字符),所以網頁打開第一行可能會顯示一個 '?' ,所以能不用盡量別用
  2. 增加、刪除文件

    • $ git add [file1] [file2] 添加指定文件到暫存區
    • $ git add [dir] 添加指定目錄到暫存區 ( 包括子目錄 )
    • $ git add . 添加修改和新建的文件到暫存區,但不包括被刪除的文件
    • $ git add -u 更新所有變化的文件,即提交工作區所有變化的文件到暫存區
    • $ git add -A 提交已被修改和已被刪除的文件,但不包括新的文件
    • $ git rm [file1] [file2] 刪除工作區文件,并把它放入暫存區
    • $ git rm --cached [file] 停止跟蹤指定文件,該文件在工作區位置不變
    • $ git mv [file] [file-rename] 重命名文件,并把改名操作放入暫存區
  3. 提交

    • $ git commit [file1] [file2] -m "message" 提交暫存區中指定文件到倉庫中
    • $ git commit -m "message" 提交暫存區所有內容至倉庫中
    • $ git commit -a 提交工作區自上一次commit以后的變化文件,至倉庫中
    • $ git commit --amend -m "message" 用新的commit,替代上一次提交和提交信息
    • $git commit -v 提交時顯示diff(文件差異)信息
  4. 分支

    • $ git branch 顯示分支列表和當前分支(帶*號的)
    • $ git branch -a 顯示本地分支列表和遠程分支列表和當前分支(帶*號的)
    • $ git branch [branch] 新建分支
    • $ git checkout [branch] 切換分支
    • $ git checkout -b [branch] 新建并切換分支
    • $ git checkout - 切換至上一個分支
    • $ git merge [branch] 合并指定分支到當前分支
    • $ git merge --no-ff -m "message" [branch] 用普通模式合并,合并后的歷史中有分支信息,而fast forward ( 默認 ) 合并在歷史中是看不出曾經做過合并
    • $ git branch -d [branch] 刪除一個分支
    • $ git rebase 作用 : 使提交歷史干凈,整潔

合并分支時,如果沒有文件沖突可正常合并,如果有沖突文件(比如兩個一樣的),Git會告訴我們,Automatic merge failed; fix conflicts and then commit the result 文件合并沖突,必須手動解決以后再提交,這時在Git會在文檔中用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,,修改時注意他們只能留一個,箭頭和等號要刪除。然后提交,合并完成。

  1. 撤銷
    • $ git checkout [file] 撤掉暫存區指定文件到工作區
    • $ git checkout . 撤銷暫存區所有文件到工作區
    • $ git reset [file] 重置暫存區指定文件,與上一次commit一致,但工作區不變
    • $ git reset --hard 重置暫存區與工作區,與上一次commit一致
    • $ git reset --hard [HEAD] 回退到某個版本,同時也會重置暫存區和工作區,HEAD代表指針,其值可以是,HEAD^ 上一個版本,HEAD^^ 上兩個版本, ... ,HEAD~100 上100個版本,或者指定版本號 8817bcf
    • $ git stash 用于保存工作進度,暫存區和工作區的改動將保存起來,當前將是一個干凈的工作區,比如用于修復bug時,把文件先保存起來,這時可以在另外的分支或當前分支處理bug
    • $ git stash list 查看stash隊列
    • $ git stash apply 恢復隊列中第一個記錄 $ git stash drop 刪除stash里的內容 $ git stash pop 恢復并stash里的內容
    • $ git stash apply [stash] 恢復指定的記錄,可以在列表中查看,比如: stash@[0] ,把 apply 換成 pop 可以恢復并刪除

當你改亂了工作區某個文件時,想要撤銷修改可使用 $ git checkout [file]
當你不但改亂了工作區某個文件,還添加到了暫存區時,想要撤銷時分兩步,重置暫存區文件 $ git reset [file] ,撤銷工作區修改$ git checkout [file],或者一步到位重置暫存區與工作區 $ git reset --hard
當你改亂了,還添加到暫存區,還提交到倉庫了,想要撤銷需要使用版本回退,比如回退到上一個版本 $ git reset --hard HEAD^

  1. 查看信息

    • $ git status 獲取倉庫當前狀態
    • $ git log 查看當前分支的版本歷史
    • $ git reflog 查看所有版本號,由此可以穿梭未來,回到過去
    • $ git log -S [keyword] 根據關鍵詞,搜索提交歷史
    • $ git log -[n] --pretty --oneline 以簡寫的形式顯示過去n次的提交信息,顯示所有去掉 -[n],顯示完整的版本號 --pretty=oneline
    • $ git diff 顯示暫存區和工作區的代碼差異
  2. 遠程倉庫

    • $ git remote 查看遠程庫信息,后面加 -v 查看詳細信息
    • $ git remote add origin git@github.com:username/projectname.git 把本地項目與遠程項目關聯
    • $ git push origin [branch-name] 把本地項目推送至遠程項目對應的分支上,origin是默認的主機名,第一次使用會提示驗證,輸入yes即可
    • $ git push origin --delete [branch] 刪除遠程分支
    • $ git clone git@github.com:username/projectname.git 把遠程項目克隆至本地,git支持多種協議,默認的git://使用ssh協議,也可使用https協議,但傳輸速度要慢
    • $ git checkout -b [branch-name] origin/[branch-name] 在本地創建和遠程分支對應的分支,使用時,本地和遠程分支的名稱最好一致
    • 如果與遠程庫相連? 1. 在 c盤 -> user > .ssh > 找到 id_rsa.pub 這是公鑰,還有一個是秘鑰,右鍵記事本打開復制,粘貼到 github -> 設置 -> ssh key -> 新建一個 名稱隨意,內容粘貼。如果沒有秘鑰使用 $ ssh-keygen -t rsa -C 'YourEmail@example.com' 生成,再沒有卸載Git重裝 2. 項目關聯或者克隆隨意 3. 公鑰的位置要在環境變量中配置好才能生效,所以生成秘鑰最好在默認的位置。
    • 關聯失敗? 可能是遠程庫創建時生成了RENAME文件造成內容與本地庫不符,使用 $ git pull origin master 抓取遠程庫與本地庫同步
    • 一個項目關聯 github 和 gitee ? 先把公鑰配置好,然后刪除現有的origin的遠程庫 $ git remote rm origin ,再使用 $ git remote add origin git@github.com:username/projectname.git 分別連接 github 和 gitee ,修改 origin 為 github 執行一次,再修改為 origin 為 gitee 再執行一次,查看 $ git remote -v 時可以看到有兩個遠程庫,推送時需要給定特殊的名稱,ex:$ git push github master
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容