前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git安装、配置、常用使用

Git安装、配置、常用使用

原创
作者头像
千万别过来
修改2023-09-27 10:39:05
5250
修改2023-09-27 10:39:05
举报
文章被收录于专栏:推荐算法学习

一、git 安装

1.下载git:https://git-scm.com/downloads

2.打开git bash运行:

ssh-keygen -t rsa

然后输入密码,生成密钥,然后去提示的路径里面找到id_rsa.pub,把它里面的信息复制到git的SSH Keys上

3.git上创建一个仓库

4.git clone下来

二、git 配置

  1. 配置用户名和邮件(这里配置的是global,每个项目也可以有自己的用户名)
代码语言:javascript
复制
git config --global user.name "yourname"
git config --global user.mail "yourname@qq.com"

-- 查看所有配置
git config --list

-- 删除配置
git config --global unset user.mail

三、git 使用

3.1 常见使用

在目录里面再开一个git bash(注意不要在原来git clone 里面的命令行操作)输入:

代码语言:javascript
复制
-- 添加到暂存区
git add *

-- 提交本地仓库
git commit -m "test"

-- 提交远程仓库
git push

-- 将最新的远程仓库代码拉下来并和本地合并
git pull   (等于git fetch + git merge)

-- 和merge功能类似,具体区别参考链接,日志更干净一些
git pull -r   (等于git fetch + git rebase)
      
-- 查看状态
git status

其他可以参考:Git使用Merge和Rebase区别及心得技巧 - 知乎

3.2 对比内容

代码语言:javascript
复制
-- 对比工作区和暂存区
git diff

-- 对比代码库和暂存区
git diff --staged

-- 对比两次提交区别
git diff <commit1><commit2>

大致如下图所示,对比不同commit的区别,比较常用的应该还是对比工作区和代码库的内容。

3.3 查看日志

代码语言:javascript
复制
-- 查看日志,有完整的信息(作者、时间等等)
git log

-- 查看commit日志信息(包含commit id),按q退出
git log --oneline
git log --oneline --graph  (可以看到画出来的整个分支变化情况)

3.4 撤销修改

代码语言:javascript
复制
-- 如果需要撤销git add的文件,此时本地的文件不会有变化
git reset HEAD XXX.py

-- 如果需要再恢复本地的文件
git checkout -- XXX.py

这里注意如果希望多次commit改成一次commit,可以使用git reset,reset后面的内容可以用git log来获取,比如下图所示,如果想回到cfbcf49a8682635c69e462cc80437118450d20f6这次的提交状态,使用git reset cfbcf49a8682635c69e462cc80437118450d20f6 就可以了。

代码语言:javascript
复制
-- 多次commit改成一次commit
-- 1.先回滚到最初的commit,用git log --oneline查看commitid
git reset XXXXX
-- 2.再重新add和commit即可
git add *
git commit -m "XXXX"
-- 3.强制push分支覆盖远端(慎重使用)
git push -f 

回滚远端记录:

代码语言:javascript
复制
git revert <要回滚的commitID,获取方式同样是git log>
-- 或按下面这样,直接回滚近2次提交并生成一个新的记录
git revert HEAD~2

3.5 分支管理

3.5.1 分支基本使用方式

1)创建、切换分支
代码语言:javascript
复制
-- 本地创建分支(远端创建分支可以在web上直接点按钮实现)
git branch 分支名

-- 本地切换分支(切换之后本地的文件会随之变化)
git checkout 分支名          //切换分支
git checkout -b 分支名       //切换并创建本地新分支
2)提交分支
代码语言:javascript
复制
-- 把本地的分支提交到远端
git push origin 分支名
git push -u origin 分支名

git push origin 分支名git push -u origin 分支名 都用于将指定分支的更改推送到远程仓库。它们之间的区别在于 -u 选项的使用,这个选项用于设置上游(upstream)跟踪分支。

  • git push origin 分支名:将指定分支的更改推送到远程仓库,但不设置上游跟踪分支。在下次推送时,您仍然需要指定远程仓库和分支名。
  • git push -u origin 分支名:将指定分支的更改推送到远程仓库,并设置上游跟踪分支。这意味着 Git 将记住在将来的 git pullgit push 操作中使用相应的远程仓库和分支。在设置了上游跟踪分支之后,您可以仅使用 git pullgit push 命令(无需指定远程仓库和分支名)来拉取和推送更改。

总之,git push -u origin 分支名 在推送分支的同时设置上游跟踪分支,这样在后续的 git pullgit push 操作中,无需指定远程仓库和分支名。而 git push origin 分支名 只推送分支,不设置上游跟踪分支。

此外,在分支里面push的话,如果远程仓库没有分支,他会提醒:

代码语言:javascript
复制
fatal: The current branch old_version has no upstream branch.
To push the current branch and set the remote as upstream, use
    git push --set-upstream origin XXXX
To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.

这个时候,按照他提示的命令运行一遍就可以了。

3)拉取、删除分支
代码语言:javascript
复制
-- 从远端拉取分支并覆盖本地
git fetch -p

-- 删除【已经合并】的本地分支
git branch -d 分支名

-- 强制删除【未合并】的本地分支,把小d改成大D
git branch -D 分支名

-- 查看远端分支和本地分支
git branch -a

3.5.2 分支合并

代码语言:javascript
复制
-- 先切换分支到master
git checkout master

-- 把XXX分支合并到当前分支。注意此时可能会有文件冲突,可以通过git status看冲突的文件。
-- 对于冲突的文件git会在文件里记录两种分支的内容,需要打开文件编辑好自己需要的之后保存,
-- 再push到远端。
git merge XXX

git commit 
git push

4. 常见问题

4.1. ignore没有生效

.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。

原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、git 安装
  • 二、git 配置
  • 三、git 使用
    • 3.1 常见使用
      • 3.2 对比内容
        • 3.3 查看日志
          • 3.4 撤销修改
            • 3.5 分支管理
              • 3.5.1 分支基本使用方式
              • 3.5.2 分支合并
          • 4. 常见问题
            • 4.1. ignore没有生效
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档