git使用过程及常用命令


之前已经学习过git的相关内容,由于长时间没用,今天就做个总结复习一下。git的安装就不再进行介绍了。

1. 安装git后,首先要设置用户名和邮箱

git config --global user.name "dzysunshine"
git config --global user.email "434681782@qq.com"

2. 创建本地仓库(Respository)

先在Git目录下创建一个空目录,例如名为learngit的目录,进入该目录,通过git init命令将其变为Git可以管理的目录。

mkdir learngit
cd learngit
git init

3. 在仓库中添加内容

使用windows时要注意不要使用记事本编辑文件,使用Notepad++, 默认编码设置为UTF-8 without BOM即可,先手动用Notepad++创建一个readme.txt文件,然后执行以下操作。(注意创建的这个文件一定要放到learngit目录(或其子目录)下)

#把文件添加到仓库
git add readme.txt
#通过下面命令告诉Git,把文件提交到仓库
git commit -m 'create readme.file'

如果有多个文件,可以依次add多次,而commit只需一次。
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

4. 查看工作区的状态

使用 git status 命令。如果 git status 告诉你有文件被修改过,用git diff可以查看修改内容, 用git log命令查看历史记录。

git status
git diff readme.txt

5. 版本回退

git log 命令可以查看历史记录,用 git relog 命令可以查看记录的每一次命令。

# 查看历史提交版本的版本号,HEAD表示当前版本
git log --pretty=oneline
# 将当前板本回退到上一次更改的版本
git reset --hard HEAD^
#如果是想回退到上100个版本,可以使用下面代码
git reset --hard HEAD~100

6. 管理修改

git diff HEAD – readme.txt 命令可以查看工作区和版本库里面最新版本的区别。

7. 撤销修改

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销。
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。

8. 删除文件

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout – file
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD file ,就回到了场景1,第二步按场景1操作。
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
  • 命令git rm file 用于删除版本库中的一个文件。

9. 连接github

#创建SSH Key,一路回车就好
ssh-keygen -t rsa -C "434681782@qq.com
  • 第一步,在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
  • 第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面。
  • 然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容就可以了。

10. 创建远程仓库并与本地版本库关联

在github上创建一个新的respository,命名为learngit,并复制SSH地址:
https://github.com/dzysunshine/learngit.git
回到我们的 Git Bash 界面,把本地 Git 库与刚刚建的远程仓库关联,输入下列命令

# origin 就是远程库的名字
git remote add origin https://github.com/dzysunshine/learngit.git

把本地仓库的所有文件(刚刚新建的 readme.md)上传到 GitHub 上(第一次需要加-u,后面就不需要了)

git push -u origin master

在本地 learngit 仓库中做任何改动后,都可以直接运行下面的语句添加、提交到仓库并上传到 GitHub 远程仓库中。

git add .
git commit -m "xxx"
git push origin master

11. 从 GitHub 克隆到本地仓库

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

git clone git@github.com:dzysunshine/100-Days-Of-ML-Code.git

12. 创建与合并分支

创建分支

# 创建dev分支,然后切换到dev分支(-b表示创建并切换)
git checkout -b dev

上面一条代码和下面的两条代码效果是相同的(需要注意,新版的git可以使用switch代替chenkout切换分支)

# 创建dev分支
git branch dev
# 切换到dev分支
git checkout dev

查看当前分支

# 查看当前分支
git branch
带*的表示当前分支
* dev
  master

在dev分支工作完成时,将dev分支合并到master分支上,并删除dev分支

# 先切换到master分支上
git checkout master
#  把dev分支的工作成果合并到master分支上
git merge dev
# 删除dev分支
git branch -d dev
# 删除后,查看branch
git branch

小结一下

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

13. 冲突问题

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph命令可以看到分支合并图。
通常分支管理中合并的时候,使用no-off模式比较好,因为它可以 在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "merge with no-ff" dev

开发一个新feature时,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D name强行删除。

14. 多人协作

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin 推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。

15. 常用命令

  • cd :用来切换工作目录,最常用的一个命令。简单来讲,cd A文件夹就是进入到A文件夹里面的意思。
  • git status .:查看当前路径下的的状态。git下最最常用的一个命令。
  • git add .: 把工作区的所有变化,(就是你的所有改动),都添加到 版本库/暂存区。
  • git commit -m “提交时说明信息”: 更进一步提交,并说明提交log。
  • git push: 把版本库的所有更新内容, 都推送到远程服务器。(就是推代码/推上去)
  • git pull: 把代码从远程服务器拉取到本地。(俗称拉代码)
  • git log:查看提交历史,与各次的提交说明。
  • git diff:比较工作区与暂存区的差异,就是比较看看你到底都做了什么修改。
  • git clone url地址: 将远程服务器上项目克隆到新创建的目录中(第一次拉项目时使用, 后面的更新都用 git pull了)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值