替換 gitlab 項目目錄,重新上傳文件
第一次使用 Gitlab 管理項目,首次文件上傳備份時一頓瞎操作。以至於項目目錄混亂不堪,今天想重新更新目錄,又處處踩坑,在此記錄下正確步驟,希望可以幫助到大家。
若遠程連接後直接進行 add、commit 操作,會出現報錯信息,提示該路徑下文件已存在,因此需要事先完成刪除錯誤文件夾的工作。然後將遠程倉庫和本地同步,消除差異,最後執行 add、commit 操作。
具體步驟如下:
1. 拉取遠程的 Repo 到本地(如果已經在本地,可以略過)
git clone *** //*** 為我的項目地址,獲取方式如下圖
![替換 gitlab 項目目錄,重新上傳文件](https://img-blog.csdnimg.cn/20200217180317790.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDk2MjQ2Mg==,size_16,color_FFFFFF,t_70)
2. 在本地倉庫中刪除文件
git rm *** //*** 為我的文件名,功能:刪除指定的文件
git rm -r *** //*** 為我的文件夾名,功能:刪除指定的文件夾
git rm -r . // 功能:刪除該目錄下的所有文件
此處 -r 表示遞歸所有子目錄,如果你要刪除的是空的文件夾,此處可以不加 -r。
3. 提交代碼
git commit -m “我的修改” // 功能:備注信息,優先英文注釋
4. 推送到遠程倉庫(比如 gitlab)
git push origin *** //*** 為推送到的具體分支
5. 切換到你需要重新上傳到遠程倉庫的本地文件夾路徑。
cd *** //*** 為重新整理好帶上傳的本地文件夾路徑
6. 初始化本地倉庫,GitHub 創建遠程倉庫
git init
7. 關聯本地和遠程倉庫
git remote add origin *** //*** 為我的項目地址, 獲取方式同上
8. 遠程倉庫和本地同步
git pull origin master –allow-unrelated-histories // 將遠程倉庫和本地同步,消除差異
此處一定要執行該句,否則會報以下錯誤:
! [rejected] master -> master (non-fast forward)
9. 添加該路徑下所有文件
git add .
10. 注釋
git commit -m “***” //“”裏為注釋信息
11. 推送到 master 分支
git push origin master //master 可替換為您要推送的指定分支
大功告成!普天同慶!
還沒結束,再附上 Git 常用命令:(貼心如我)
一、本地操作:
1. 其它
git init:初始化本地庫
git status:查看工作區、暫存區的狀態
git add :將工作區的“新建 / 修改”添加到暫存區
git rm –cached :移除暫存區的修改
git commit :將暫存區的內容提交到本地庫
tip:需要再編輯提交日誌,比較麻煩,建議用下麵帶參數的提交方法
git commit -m “提交日誌” :文件從暫存區到本地庫
2. 日誌
git log:查看曆史提交
tip:空格向下翻頁,b 向上翻頁,q 退出
git log –pretty=oneline:以漂亮的一行顯示,包含全部哈希索引值
git log –oneline:以簡潔的一行顯示,包含簡潔哈希索引值
git reflog:以簡潔的一行顯示,包含簡潔哈希索引值,同時顯示移動到某個曆史版本所需的步數
3. 版本控製
git reset –hard 簡潔 / 完整哈希索引值:回到指定哈希值所對應的版本
git reset –hard HEAD:強製工作區、暫存區、本地庫為當前 HEAD 指針所在的版本
git reset –hard HEAD^:後退一個版本
[tip:一個 ^ 表示回退一個版本]
git reset –hard HEAD~1:後退一個版本
[tip:波浪線 ~ 後麵的數字表示後退幾個版本]
4. 比較差異
git diff:比較工作區和暫存區的所有文件差異
git diff :比較工作區和暫存區的指定文件的差異
git diff HEAD|HEAD^|HEAD~| 哈希索引值 :比較工作區跟本地庫的某個版本的指定文件的差異
5. 分支操作
git branch -v:查看所有分支
git branch -d < 分支名 >:刪除本地分支
git branch < 分支名 >:新建分支
git checkout < 分支名 >:切換分支
eg:git checkout develop // 切換到 develop 分支
eg2:git push origin –delete develop // 刪除 develop 分支
git merge < 被合並分支名 >:合並分支
tip:如 master 分支合並 hot_fix 分支,那麽當前必須處於 master 分支上,然後執行 git merge hot_fix 命令
tip2:合並出現衝突
①刪除 git 自動標記符號,如 <««« HEAD、»»»> 等
②修改到滿意後,保存退出
③git add
④git commit -m “日誌信息”,此時後麵不要帶文件名
二、本地庫跟遠程庫交互:
git clone < 遠程庫地址 >:克隆遠程庫
功能:①完整的克隆遠程庫為本地庫,②為本地庫新建 origin 別名,③初始化本地庫
git remote -v:查看遠程庫地址別名
git remote add < 別名 > < 遠程庫地址 >:新建遠程庫地址別名
git remote rm < 別名 >:刪除本地中遠程庫別名
git push < 別名 > < 分支名 >:本地庫某個分支推送到遠程庫,分支必須指定
git pull < 別名 > < 分支名 >:把遠程庫的修改拉取到本地
tip:該命令包括 git fetch,git merge
git fetch < 遠程庫別名 > < 遠程庫分支名 >:抓取遠程庫的指定分支到本地,但沒有合並
git merge < 遠程庫別名 / 遠程庫分支名 >:將抓取下來的遠程的分支,跟當前所在分支進行合並
git fork:複製遠程庫
5 Pycharm IDE內使用git
參見下文4.2節:https://blog.wenxuecity.com/myblog/36867/202001/2869.html
6 VSCODE內使用git
a)DOS/WIN版本問題:https://stackoverflow.com/questions/2517190/how-do-i-force-git-to-use-lf-instead-of-crlf-under-windows/13154031? 我在~/.gitconfig下加了
[core]
eol = lf
autocrlf = false
如果git clone後發現有文件被變成windows版用這個
dos2unix #反之用unix2dos
b)vscode下git把所有文件都標記為M修改了的:
重啟vscode不能解決的話看這個:https://stackoverflow.com/questions/62724723/git-in-visual-studio-code-says-file-is-modified-even-when-there-is-no-change 即用命令:
git config core.filemode false #或者全局下用:
git config --global core.filemode false
c)git下修改文件名,狀態是刪掉+新建的問題:https://stackoverflow.com/questions/62724723/git-in-visual-studio-code-says-file-is-modified-even-when-there-is-no-change
我用git mv沒發現問題
|