學(xué)習(xí)git命令之前首先來看一個關(guān)系圖,理解我們的代碼從工作區(qū)到遠(yuǎn)程倉庫的過程中經(jīng)過哪些過程,同時也是我們提交代碼的流程。

git.png
接下來就是常用的一下命令
1. 從倉庫拉取線上代碼
git clone url (倉庫地址)
2.狀態(tài)追蹤
git status
ls // 查看
3.提交到暫存區(qū)域 (git會自動忽略空文件夾)
三種提交方式:
單文件提交 git add ljy.txt
多文件提交 git add d.txt s.txt
全部提交 git add.
4.錯誤操作:需要撤回
git checkout 只能撤回還沒有g(shù)it add (提交到暫存區(qū))的狀態(tài)。對于新添加的文件需要先git add . 加到git file當(dāng)中才可以修改,添加,刪除文件內(nèi)容,然后再進(jìn)行撤回
git checkout -- 1.txt // 撤回一個指定文件
git checkout . // 撤回全部修改的文件
git checkout ljy.txt // 單文件撤回
git checkout d.txt s.txt // 多文件撤回
5、新建文件
touch 1.txt
6、新建文件夾
git touch image/.gitkeep
7、輸入郵箱和密碼
git config --global user.email "你的郵箱"
git config --global user.name "你的名字"
8、提交到本地倉庫
git commit -m "(當(dāng)前版本的有效信息)";
9、查看我們本地倉庫的提交版本信息
git log --pretty=oneline(屏蔽作者和時間信息)
(HEAD-->master)當(dāng)前屬于哪個版本
41165d6a0c782496a0201f3fe0dc70bb2db2d464 (當(dāng)前版本的ID,經(jīng)過非對稱加密之后的);
10、git reset 回退版本
HEAD~100回退到前100個版本
git reset --hard HEAD~2
11、版本前進(jìn)
在查看版本信息時一定要記住版本號前5位
git reset --hard 版本號前5位
12、鑰匙:
ssh-keygen -t rsa -C "1010020650@qq.com"
13.創(chuàng)建分支、分支重命名、設(shè)置分支追蹤
git remote -v // 列出已經(jīng)存在的遠(yuǎn)程分支的詳細(xì)信息
1.git fetch -p 將遠(yuǎn)程分支代碼拉到本地 -p 會刪除遠(yuǎn)程已經(jīng)不存在的分支
2.git status 查看目前所在分支
3.git checkout -b + 新分支名 origin/總分支名 創(chuàng)建完畢,并且切換到新分支 追蹤到master分支
git branch -m 新分支名
git branch --set-upstream-to=origin/遠(yuǎn)程分支 本地分支 // 設(shè)置遠(yuǎn)程追蹤的分支
14.刪除分支
git branch -d + 要刪除的分支名
git branch -D + 要刪除的分支名 (強制刪除)
刪除遠(yuǎn)程分支:git push origin:分支名
15.同步遠(yuǎn)程已刪除的分支和刪除本地多余的分支
git branch -a 查看本地分支和遠(yuǎn)程分支情況
git remote show origin 查看本地分支和追蹤情況
git remote prune origin 同步刪除遠(yuǎn)程已經(jīng)刪除的分支
git branch -D feature/chatfix 刪除本地多余的分支
16.合并分支 之 rebase和merge 區(qū)別

merge.png

rebase.png
1.merge 用”pull“命令把”origin“分支上的修改拉下來并且和你的修改合并; 結(jié)果看起來就像 一個新的”合并的提交”(merge commit)
- rebase 會把你的”mywork“分支里的每個提交(commit)取消掉,并且把它們臨時保存為補丁(patch)(這些補丁放到”.git/rebase“目錄中),然后把”mywork“分支更新到最新的”origin“分支,最后把保存的這些補丁應(yīng)用到”mywork“分支上。
在rebase的過程中,也許會出現(xiàn)沖突(conflict)。在這種情況,Git會停止rebase并會讓你去解決沖突;在解決完沖突后,用”git add“命令去更新這些內(nèi)容的索引(index), 然后,你無需執(zhí)行 git commit,只要執(zhí)行:
解決完沖突 繼續(xù)rebase
git rebase --continue
撤銷rebase
git rebase --abort
跳過這個commit
git rebase --skip
git pull = git fetch + git merge 從遠(yuǎn)程倉庫提取數(shù)據(jù)并嘗試合并到當(dāng)前分支
git pull --rebase = git fetch + git rebase
git merge dev 當(dāng)前處于分支,去合并 dev合并
git branch 查看本地都有幾個分支,當(dāng)前處于哪一個(*文字為綠色的)
17、上傳文件
git fetch -p // 拉取遠(yuǎn)程最新代碼
git rebase origin/master // 本地代碼合并遠(yuǎn)程代碼
git push -u origin master // 第一次上傳加-u,之后不需要加
git push origin f-pay(分支名) // 第二次之后上傳
18.將多個commit合并成一個commit
git reset --soft 2f4484c (相應(yīng)合并的最早的commit版本) //此時從最早的commit到最近的commit之間所有修改的內(nèi)容都會回到暫存區(qū)
git commit -m '合并后的commit' // 重新提交一個commit
19.揀選
1.git cherry-pick + commit的版本號
git cherry-pick -n+ commit的版本號 // 如果不想git cherry-pick自動進(jìn)行提交,則加參數(shù)-n即可
2.當(dāng)cherry-pick時,沒有成功自動提交,這說明存在沖突,因此首先需要解決沖突,解決沖突后需要git commit手動進(jìn)行提交;(兩種方法)
(1)git commit -m "提交說明"
(2)git add . -> git cherry-pick --continue
3.如果想要在cherr-pick后重新編輯提交信息
git cherry-pick -e + commit的版本號
4.如果要中斷這次cherry-pick,則使用git cherry-pick --quit,這種情況下當(dāng)前分支中未沖突的內(nèi)容狀態(tài)將為modified
5.如果要取消這次cherry-pick,則使用git cherry-pick --abort,這種情況下當(dāng)前分支恢復(fù)到cherry-pick前的狀態(tài),沒有改變
20.將本地代碼推送到遠(yuǎn)程倉庫
在遠(yuǎn)程創(chuàng)建一個倉庫
初始化本地git倉庫: git init
將項目代碼提交到暫存區(qū):git add .
將暫存區(qū)的代碼提交到本地倉庫:git commit -m '提交說明'
連接遠(yuǎn)程倉庫:git remote add origin git@github.com:username/xxx.git
如果遠(yuǎn)程倉庫有文件,先拉取文件和本地合并(新建倉庫可跳過):git pull origin master
推送本地代碼到遠(yuǎn)程: git push -u origin master
21.查看最近三次提交
git log --online -3