vscode 取消拉去变基_GIT快速回忆
關于GIT和github:請搜索git下載安裝,安裝了git才能去github或碼云(國內)觀察自己上傳的代碼,github有個桌面版只是基于git的的圖形工具,還是需要下載git。
概念:
1.提交、版本、commit,ID,差不多都一個意思,動詞和名詞的區別
2.遠程服務器:碼云,github等網站
3.工作區:指項目的實際文件所在位置。
4.暫存區(緩存區):add命令之后的記錄所在位置。
5.儲藏區:stash后的記錄所在位置。
6.版本(ID):commit命令后生成。
7.指針:借用c語言的指針概念,指向某個版本(ID)
8.分支:一個指針如果叫做nima,那么稱nima為分支
9.主分支:大家默認,叫master的指針作主分支
10.HEAD指針:借用c語言概念,HEAD為指向指針的指針,始終指向分支,被HEAD指向的分支為當前分支,也可理解為HEAD就是當前分支
11.跟蹤:git將留意項目中被git設為跟蹤的文件發生的變化
12..gitignore文件:對于狀態為untracked files的文件,加入到該文件后不再提示未跟蹤,即設置為不跟蹤文件
提示:想看每個命令的全部選項,請在每個命令后打-h 。一般形式為-x或--xxxx
命令:
git init 本地初始化一個倉庫
git clone [url] #克隆一個倉庫到本地(也可添加主機后再fetch)
git clone -b [branch] [url] #克隆制定分支
git fetch [origin] #拉取遠程分支origin/*(不指定分支則拉取所有分支)
git pull [遠程主機名] #fetch+merge,細則同上
git add [文件] #納入git管理
git remote add [主機名] [遠程地址] #添加遠程服務器,主機名不寫則默認為"origin"
git remote show [主機名] #顯示遠程主機超級詳細信息
git remote -v #-v為--verbose(啰唆的)縮寫,顯示詳細信息
git remote rename [主機名] [新主機名] #重命名
git remote rm [主機名] #刪除遠程服務器
git log --oneline --graph --all # 一行、(樹)圖形化、全部分支,顯示提交記錄
git log -n #最近的n個提交記錄
git merge [branch] #把branch合并到當前分支,并創建一個最終合并的commit
--abort #中止該次合并
--allow-unrelated-histories #允許不同項目的分支meger(pull也可)到本地
注意:一旦出現合并沖突,將進入“合并沖突狀態”,該狀態下無法使用任何分支切換命令,直到完成合并或終止合并才退出合并沖突狀態。合并沖突狀態中,需要修改后再次add沖突文件,并且手動進行一次commit,才能完成合并
git rebase [startPoint] [endPoint] #變基到startPoint,endPoint默認為HEAD可省略
git rebase [startPoint] [endPoint] --onto [branch] #把當前分支線上左開右閉區間內的commit變基到指定分支
-i #啟用交互
git push [遠程主機名] [本地分支名]:[遠程分支名] #推送分支(當前分支存在追蹤則只需"git push"即可)
git push -u [遠程主機名] [本地分支名]:[遠程分支名] #推送分支,同時設為追蹤分支
git push [遠程主機名] []:[遠程分支名] #留空本地分支名,用空分支覆蓋遠程分支。實際為刪除操作
git checkout [file] #從暫存區恢復文件
git checkout [branch] #新建或切換到該分支,工作目錄文件回到該分支指向的版本(工作目錄變)
git checkout [id] [file]#恢復文件到指定commit的狀態
git checkout -b [new local branch] [remote branch] #獲取遠程分支,將本地新建分支指向獲取的遠程分支,同時加上遠程跟蹤
git rm [file] #默認工作區+遠程倉庫都刪除文件
git rm [file] --cached #遠程刪除,本地不刪除
git reset HEAD #重置到當前版本
git reset HEAD~2 #重置到兩個版本前(HEAD~ 和 HEAD~1 一樣意思)
git reset [$id] #重置到指定ID版本(log顯示的那一大串或者log --oneline那小串都可以)
--soft #暫存區不變,工作區不變
--mixed #暫存區清空,工作區不變 默認值
--hard #暫存區清空,工作區回退
注意:無論哪個參數,均能移動當前分支。另外與revert區別在于,reset回去舊版本不被當作一個commit
git revert [$id] # 恢復某次提交的狀態,恢復動作本身也創建了一次提交對象
git revert HEAD # 恢復最后一次提交的狀態
git commit -m [message] #提交,不帶參數-m將啟用編輯器以編輯注釋
git commit -am [message] #自動把受追蹤文件進行暫存+提交
git branch #顯示本地所有分支
-a #顯示包括遠程分支(origin/*)的所有分支
-v #詳細顯示本地所有分支
-vv #更加詳細顯示本地所有分支,包括了遠程跟蹤、落后/領先情況
–d [branch] #刪除本地分支,但不能刪除當前分支(切去其它分支先),不能刪除未合并分支
-D [branch] #強制刪除
-u [origin/branch] #設置跟蹤的遠程分支(-u為--set-upstream-to縮寫)
--unset-upstream #取消上面設置的追蹤
git difftool [id_1] [id_2] #啟用對比工具以對照兩次提交,也可以換成文件名對比文件
git stash #把暫存區和未添加到暫存區的被追蹤文件儲藏起來,清空暫存區和工作區記錄(然后就能用checkout切換其他分支了)
git stash list #查看現有的儲藏
git stash apply stash@{0} #通過list查看名稱(如stash@{0}),不指定儲藏則應用最近的儲藏
git stash drop stash@{1} #刪除指定儲藏
git stash push #儲藏入棧
git stash pop #儲藏出棧
取消跟蹤文件的問題
1.被add、commit操作后的文件不屬于untracked files,不受.gitignore控制,始終被跟蹤,除非他們被git rm命令刪除或其他等效的命令
2.常見兩種情況:
(1)遠程倉庫中不需要這個文件,但不想在本地中刪除。
刪除時加上--cached參數,然后把文件加入.gitignore即可。
(2)遠程倉庫需要setting.json這個配置文件,但不想暴露其中的個人私密配置信息,想要他只出現在第一次的提交中(沒有密碼信息),但后續更改不要去追蹤變化(有密碼信息)。
這個沒辦法的,將就吧。把setting.json加入到.gitignore,同時復制一份改名為setting.json.example,告知其他人setting.json.example是設置的模板文件,自行更改文件名。關于其討論,轉:git忽略已經被提交的文件
rebase變基操作
基本上必帶參數-i,不然容易混亂。
-i參數交互模式,其實就是讓你的默認編輯器打開一個臨時生成的文件,里面是各種詳細信息,通過編輯這個臨時文件,就能完成交互,里面大量的#開頭的東西,都是注釋,主要是讓你看下可以怎么改,不用再去百度有什么選項之類的。當你保存并關閉編輯器(vim中wq退出或vscode中關閉編輯窗口等),git進行分析并繼續rebase。
當你選擇合并若干commit時,git再次啟動默認編輯器打開臨時文件,讓你自由決定如何控制commit提交信息等。
變基沖突時,是逐個commit進行的。如變基3個commit到某個分支,那么沖突等效于這3個commit依次merge到目標分支,也就是可能需要完成3次類似于merge沖突的操作。
類似于merge,你可以在任何時候使用git rebase --abort終止變基恢復原狀。
類似于merge,在沖突解決后使用git add [file]暫存該沖突文件。不同在于無需馬上提交,而是git rebase --continue以繼續
總結
以上是生活随笔為你收集整理的vscode 取消拉去变基_GIT快速回忆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国建设银行如何注册(《中国》第一季)
- 下一篇: 在手机怎样设置滕达旧路由器手机如何设置旧