Git基础操作

拉代码

方法一

直接clone,复制远程仓库文件夹

git clone git@gitee.com:chen-LinQiang/my-notes.git

方法二

在已有仓库文件夹中拉代码

# 初始化
git init
# 关联远程仓库
git remote add origin git@gitee.com:chen-LinQiang/my-notes.git
# 切换到本地主分支
git checkout master
# 若报错error: pathspec 'master' did not match any file(s) known to git.
# git fetch  # 获取全部分支,若无效,则
# git fetch origin  # 获取远程分支
# git branch -vv  # 查看分支关联情况
# 拉代码
git pull

推代码

git push

git push -u origin master 
相当于
git branch --set-upstream-to=origin/master master//将远程仓库origin的master分支与本地仓库master分支关联
加
git push origin master

基础操作

  1. 创建本地仓库

    mkdir local_repository
    
  2. 初始化本地仓库

    git init
    ----
    Initialized empty Git repository in D:/cc/learngit/.git/
    
  3. 关联远程仓库

    git remote add origin git@gitee.com:chen-LinQiang/test_project.git
    

    扩展:删除关联(git remote rm origin)

  4. 检查关联是否成功

    git remote -v
    ----
    origin  git@gitee.com:chen-LinQiang/test_project.git (fetch)
    origin  git@gitee.com:chen-LinQiang/test_project.git (push)
    
  5. 开始跟踪某个文件

    git add a.txt
    

    批量跟踪所有工作目录下未被跟踪的文件

    git add .
    

    每次修改后都要重新add,否则commit上去的为上次add的版本

  6. 查看文件状态

    image-20220609141212168

    “Untracked files”:未被跟踪的文件

    “Changes to be committed”:暂存状态,commit后将留存版本在历史记录中

  7. 查看内容差异

    # 查看尚未暂存的文件更新了哪些部分
    git diff
    # 查看已经暂存起来的文件和上次提交时的快照之间的差异
    git diff --cached
    
  8. 跳过使用暂存区域

    # 加上-a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交
    git commit -am "test"
    

    [注意] git commit -am可以写成git commit -a -m,但不能写成git commit -m -a

    # 查看暂存区文件
    git ls-files
    
  9. 从暂存区域移除文件

    git rm --cached a.txt
    

    会删除所有被跟踪,但在工作目录被删除的文件

    git rm $ (git ls-files --deleted)
    
  10. 撤销操作

    • 修改提交说明

      git commit --amend
      

      [注意] 此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。

  11. 推送到远程仓库

    git push origin master
    # -u 记住推送地址及分支,下次推送只需要输入git push即可
    git push -u origin master
    
  12. 查看文件提交历史

    git log ./path/to/file
    

    文件移动或rename后,查看完整历史提交记录

    git log --follow ./path/to/file
    

    简洁查看提交历史

    git log --pretty=oneline filename
    # 查看分支所有提交历史
    git log --pretty=oneline
    

分支操作

  1. 查看分支

    git branch  # 查看本地分支
    git branch -r  # 查看remote分支
    git remote  # 查看remote分支
    git branch -a  # 查看本地分支以及remote分支
    git branch -vv  # 查看本地和远程分支的对应关系
    
  2. 创建分支

    # 创建本地分支
    git branch <name>
    # 创建新分支并立即切换到新分支
    git checkout -b <name>
    # 创建远程分支
    git push origin <name>
    
  3. 删除分支

    # 删除本地分支
    git branch -d <name>
    

回滚操作

  1. 已提交,没有push

    # 只撤销commit操作
    git reset --soft <commit_id>
    # 撤销commit和add两步操作
    git reset --mixed <commit_id>
    
  2. 已提交,并且push

    # 撤销并舍弃版本号之后的提交记录
    git reset --hard <commit_id>
    # 撤销,但保留了提交记录
    git revert <commit_id>  # 注意id为要撤销的commit id
    

关键字

origin

origin的意思是指“远程仓库”,就是远程仓库链接的别名,是在clone一个托管在Github上代码库时,git默认创建的指向这个远程代码库的标签,origin指向的就是本地的代码库托管在Github上的版本。

git clone https://github.com/user1/repository
git remote -v
----
origin https://github.com/user1/repository.git (fetch)
origin https://github.com/user1/repository.git (push)

git为你默认创建了一个指向远端代码库的origin

报错问题

git add时换行符问题warning

warning: LF will be replaced by CRLF in py_script/yaml/write.yaml.
The file will have its original line endings in your working directory

原因

LF和CRLF其实都是换行符,但是不同的是,LF是linux和Unix系统的换行符,CRLF是window 系统的换行符。这就给跨平台的协作的项目带来了问题,保存文件到底是使用哪个标准呢? git为了解决这个问题,提供了一个”换行符自动转换“的功能,并且这个功能是默认处于”自动模式“即开启状态的。
这个换行符自动转换会把自动把你代码里 与你当前操作系统不相同的换行的方式 转换成当前系统的换行方式(即LF和CRLF 之间的转换),这样一来,当你提交代码的时候,即使你没有修改过某个文件,也被git认为你修改过了,从而提示"LF will be replaced by CRLF in *****"

解决

最简单的一种办法就是把自动转换功能关掉即可。
输入命令 :git config core.autocrlf false (仅对当前git仓库有效)
git config --global core.autocrlf false (全局有效,不设置推荐全局)

posted @ 2022-07-02 00:00  强哥不强  阅读(48)  评论(0编辑  收藏  举报