Git常用的一些命令和问题解决方法记录

107 阅读5分钟

推荐在线学习git网站

常用操作

  • 创建分支
  • git branch 输入你想要创建的名字
  • 切换分支
  • git checkout 这时候一个Head的指针会指向name的分支
    查看当前所处分支和各分支名
  • 查看分支交叉情况

    • git log --oneline --decorate --graph --all
  • 删除分支

    • git branch -D 这里D不大写会有提示
  • 切换到想要合并到的分支,将目标分支合并进来

    • git merge
  • 查看每一个分支的最后一个提交
  • git branch -v
  • 查看哪些分支 已经/没有 合并到当前分支
  • git branch --merged
  • git branch --no-merged

image.jpeg

仓库初始化

  • 创建初始化文件
  • git init
  • 查看当前目录下文件状态
  • git status (untracked unmodified modified staged暂存状态)
  • git status 查看指定文件状态
  • 添加所有修改文件到暂时
  • git add .
  • 提交暂存区中的内容到本地仓库 -m表示修改的信息
  • git commit -m ‘输入修改的信息’

如何修改自己的代码库?

  • 拷贝自己的代码
  • git clone "link"
  • 添加所有修改文件到暂时
  • git add .
  • 提交暂存区中的内容到本地仓库 -m表示修改的信息
  • git commit -m ‘输入修改的信息’
  • 第一次提交的话需要设置提交链接
  • git remove set-url origin "https:代码库地址"
  • 提交修改后的代码
  • git push origin master

一些可能遇到的问题

如果你clone下来一个别人的仓库,在此基础上完成你的代码,推送到自己的仓库可能遇到如下问题:

error: remote origin already exists.表示远程仓库已存在。

因此你要进行以下操作:

1、先输入git remote rm origin 删除关联的origin的远程库。

2、关联自己的仓库 git remote add origin gitee.com/xxxxxx.git

3、最后git push origin master,这样就推送到自己的仓库了,master根据自己所在的分支自己修改。

如何pull request?

1、首先fork代码库

2、进入到自己仓库下fork的代码库,找到clone链接,在自己的控制台输入链接

git clone 链接

3、查看当前仓库和哪些远程仓库建立了链接

git remote -v

你会发现只和自己fork的仓库代码有链接

4、与你想建立链接的代码建立链接

git remote add upstream

5、新建并切换到新建的分支

git checkout -b mybranch

6、作出自己的修改

比如新建文件PRTest;

7、提交

使用 git add PRTest ,git commit ,git push等系列命令提交到自己GitHub上的Repository

8、到自己的GitHub的Repository上点击Pull Requests,再点击New pull requests按钮;
如下图:

image.png

b.进入Comparing changes界面。

image.png

image.png

2.4.2 Create pull request

a.点击Create pull request按钮;

image.png

b.填写相关信息,在点击Create pull request按钮即可。

image.png

如何在多人协作的情况下使用git?

举个例子,当你在你的分支写代码的情况下,别人修改了master主干分支的代码,这时候你需要重新拉取最新的代码和你现在写的代码进行合并,怎么解决?

  1. 方法一:直接拉取远程代码。但是不推荐这样做,会和你自己的代码产生冲突,因为是直接合并的,⽆法提前处理冲突。虽然pull这种方式可以更新代码到本地,相当于fetch+merge,不过多人协作的话不够安全。

    # 查看当前远程分⽀
    $ git remote -v
    # 直接拉取远程分支最新代码并合并最新代码到本地当前分支
    $ git pull origin master    `**⽰例:拉取远端origin/master分⽀合并到本地当前分⽀**`
    
  2. 方法二:git fetch + git merge:获取最新代码到本地,然后手动合并分支

    # 查看当前远程的版本
    $ git branch -v
    
    # 获取最新代码到本地临时分⽀(本地当前分⽀为[branch],获取的远端的分⽀为[origin/branch])
    $ git fetch origin master:master1   `**⽰例:在本地建⽴master1临时分⽀,并下载远端的origin/master分⽀到master1临时分⽀中**`
    
    以上命令的意思是:从远程的origin仓库的master分支下载最新版本代码到本地并新建一个分支master1中。
    如果本地不存在master1分支, 则会自动创建一个新的master1分支;
    如果本地存在master1分支, 并且是‘fast forward’, 则自动合并两个分支, 否则, 会阻止以上操作
    
    # 查看版本差异  
    $ git diff master1     `**示例: 查看本地master1分支与当前分支的版本差异**`
      
    # 合并最新分支到本地分支  
    $ git merge master1     `**示例: 合并本地临时分支master1到当前分支**`
    
    # 删除本地临时分支  
    $ git branch -d master1   `**示例: 删除本地分支master1**`
    
    
    ps:如果master1分支没有成功合并到本地当前分支会报错,可以用以下命令强制删除
    $ git branch -D master1    
    
  3. 方法三:不新建额外的分支

    # 查看当前远程的版本  
    $ git remote -v  
    
    # 获取最新代码到本地(本当前地分支为[branch],获取的远端的分支[origin/branch]) 
    $ git fetch origin master  `**示例:获取远端的origin/master分支**`
    
    以上命令的意思是:从远程的origin仓库的master分支下载代码到本地的master分支
    
    # 查看版本差异  
    $ git log -p master..origin/master  `**示例1:查看本地的master与远端的origin/master分支的版本差异**`	
    
    # 合并最新代码到本地分支   
    $ git merge origin/master          `**示例1:合并远端origin/master分支到当前分支**`
    
    
    `ps:注意git fetch origin与git fetch origin master 的区别`
    $ git fetch origin意思是获取远端的默认分支的最新代码,省略分支名代表获取的是默认分支的最新代码,也就是说,如果拉取远程仓库默认分支名最新代码到本地,则可以省略要fetch的分支名。
    而$ git fetch origin master是设定当前分支的 FETCH_HEAD为远程仓库的master分支,属于明确了获取指定分支的最新代码。
    注意: 在这种情况下, 不会在本地创建本地远程分支, 这是因为:这个操作是git pull origin master的第一步, 而对应的pull操作,并不会在本地创建新的branch。
    另外,该命令还带来了一个附加效果,那就是:这个命令可以用来测试远程仓库的远程分支master是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常。