git

打印 被阅读次数

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 自动标记符号,如 等

    ②修改到满意后,保存退出


    ③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没发现问题

登录后才可评论.