Githup使用

文章目录

  • 1. git基本使用
    • 1.1. Git和GitHub、Gitee的区别
    • 1.2. 上传项目
  • 2. 问题
    • 2.1. 中文文件名问题
    • 2.2. 冲突解决
    • 2.3. 怎么撤销修改
      • 2.3.1. 尚未使用`git add`
      • 2.3.2. 使用了`git add`
      • 2.3.3. 使用了`git commit`
    • 2.4. ssh和https
    • 2.5. 使用码云
    • 2.6. git修改提交的注释内容
    • 2.7. 查看未提交或者未push到远程
    • 2.8. 注

1. git基本使用

常用git命令,参考:Git 大全

学习git,参考:廖雪峰的官方网站-Git教程

1.1. Git和GitHub、Gitee的区别

  • Git:宽泛的说,Git是目前世界上最先进的分布式版本控制系统。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。 Git 的速度很快,这对于大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力(即分支功能)
  • GitHub:gitHub是一个面向开源及私有软件项目的托管平台。作为免费的远程仓库,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。
  • gitee(码云)同GitHub,不过Gitee是国内的,速度较快

1.2. 上传项目

  1. 打开文件夹(假设project),这个文件夹将作为工作区(Working Directory)存在
  2. 在文件夹右键,“Git BASH Here”或者使用cmd(linux下当然不是cmd了)将路径修改至目标文件夹
  3. 执行git init。执行完成后这时你会发现project里面多了个.git文件夹(这个不算工作区,而是Git的版本库(Repository)),它是Git用来跟踪和管理版本库的。如果看不到,是因为它默认是隐藏文件,需要设置一下让隐藏文件可见。这时,git自动为我们创建了唯一一个master分支
  4. 使用git status查看当前状态
  5. 编写.gitignore文件(如果没有,手动创建),忽略不想上传的文件
  6. 再次使用git status查看上传文件列表,若不合要求,则再次修改,直到符合要求为止
  7. 使用git add,添加至暂存区
  8. 使用git commit -m '注释',将暂存区内容提交至当前分支
  9. 上边两步可以合并,使用git commit -am '注释'
  10. git的ssh key等配置相关设置
  11. GitHub账号,以及ssh key等相关设置
  12. 在Github上创建好Git仓库之后,就可以和本地仓库进行关联。如:git remote add origin [email protected]:lihhz/node-test.git(这里用的是码云的ssh)
  13. git push -u origin master。-u:初次上传需要使用,表示--set-upstream
  14. 如果报错error:failed to push ...,执行git pull origin master拉取一下
  15. 如果再报错refusing to marge unlated histories,则修改命令为git pull --allow-unlated-histories origin master
  16. 解决完报错后,git push -u origin master(初次需要-u,以后就不需要了)
  17. 如果需要查看提交日志git log,可以加上参数--pretty=oneline这样每条记录将显示在一行内

2. 问题

2.1. 中文文件名问题

Git Bash中,如果操作中文文件名的文件,可能会找不到文件,这个时候需要在命令中的文件名前后加上"

2.2. 冲突解决

暂无

2.3. 怎么撤销修改

撤销修改

几种情况:

  1. 尚未使用git add
  2. 使用了git add,还没有git commit
  3. 使用了git commit,还没有git push
  4. 使用了git push

2.3.1. 尚未使用git add

  1. 手动修改文件至原始状态
  2. 使用git checkout -- 文件名称。注意,一定要有--,否则就成了切换branch;还有就是--和文件名称之间要有空格,如果是中文文件名,在文件名称前后加"
命令`git checkout -- readme.txt`意思就是,把`readme.txt`文件在工作区的修改全部撤销,这里有两种情况:

一种是`readme.txt`自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是`readme.txt`已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

2.3.2. 使用了git add

git reset HEAD readme.txt

使用了git reset HEAD 文件名后,相当于把修改后的文件从暂存区拿出来,重新放入工作区。如果还需要将工作区的修改撤销,则使用命令git checkout -- 文件名

`git reset`命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

2.3.3. 使用了git commit

参考:版本回退
使用了git commit意为着已经提交到版本库了,只是在远程仓库还不存在而已。这个时候需要的不是撤销操作,而是版本回退了。

版本回退步骤

  1. 使用命令git log [--pretty=oneline]查看历史版本
  2. 使用命令git reset --hard HEAD^回退到上一个版本,命令参数解释如下
    1. HEAD^的意思是上一个版本,也可以写成HEAD~1;如果你进行了2次commit,想都撤回,可以使用HEAD~2
    2. –mixed : 意思是:不删除工作空间改动代码,撤销commit,并且撤销git add. 操作。这个为默认参数git reset --mixed HEAD^git reset HEAD^ 效果是一样的。
    3. –soft :不删除工作空间改动代码,撤销commit不撤销git add .
    4. –hard:删除工作空间改动代码,撤销commit,撤销git add . 注意完成这个操作后,就恢复到了上一次的commit状态。

2.4. ssh和https

https每次上传都要提示用户名密码,很烦

2.5. 使用码云

参考:廖雪峰的官方网站 - 使用码云
码云上创建账号、上传ssh key 、新建仓库等

2.6. git修改提交的注释内容

amend	英[əˈmend]  美[əˈmɛnd]
vt.	修订; 改良,修改;

Git已经commit的log修改
1.输入命令:git commit --amend
2.修改最近提交的message,提交的注释都在最上面,输入:q 退出vim编辑器
3.查看是否修改成功:git log
4.修改成功后,提交远程:

    git push <remote> <branch> --force
    # Or
    git push <remote> <branch> -f

5.查看远程库,修改成功

2.7. 查看未提交或者未push到远程

git status ##只能查看未传送提交的次数
git cherry -v ##只能查看未传送提交的描述/说明
git log master ^origin/master ##则可以查看未传送提交的详细信息

2.8. 注

Github上仓库和本地仓库关联方法(命令行):

git remote add origin https://github.com/guyibang/TEST2.git

其中https://github.com/guyibang/TEST2.git就是Github上册仓库地址

  • Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

  • 我们把文件往Git版本库里添加的时候,是分两步执行的:

    • 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
    • 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支
      因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
      你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

你可能感兴趣的:(开发工具)