個人資料
歸檔
正文

git

(2023-02-13 17:42:07) 下一個

https://support.i-search.com.cn/article/1581934440474 

替換 gitlab 項目目錄,重新上傳文件

第一次使用 Gitlab 管理項目,首次文件上傳備份時一頓瞎操作。以至於項目目錄混亂不堪,今天想重新更新目錄,又處處踩坑,在此記錄下正確步驟,希望可以幫助到大家。

若遠程連接後直接進行 add、commit 操作,會出現報錯信息,提示該路徑下文件已存在,因此需要事先完成刪除錯誤文件夾的工作。然後將遠程倉庫和本地同步,消除差異,最後執行 add、commit 操作。

具體步驟如下:

1. 拉取遠程的 Repo 到本地(如果已經在本地,可以略過)

git clone *** //*** 為我的項目地址,獲取方式如下圖
替換 gitlab 項目目錄,重新上傳文件

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沒發現問題

 

[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.