红尘来去两袖空,天地乾坤在我胸 --git命令总结

在github上创建第一个工程,添加一个README.md

红尘来去两袖空,天地乾坤在我胸 --git命令总结_第1张图片
git-test.png

在本地新建一个文件夹,同步远程代码

git init    #在目录中初始化本地git仓库
git remote add origin url #本地和远程仓库关联
git pull origin master       #将远程仓库的代码pull到本地

在本地添加文件dairy.txt,并提交

git status  #查看目前git的状态
git add dairy.txt   #git add . 添加全部,其实是将工作区的内容提交到暂存区
git commit -m "add dairy.txt " 
git push origin master
红尘来去两袖空,天地乾坤在我胸 --git命令总结_第2张图片
git push.png

查看github,在本地新建的文件已经同步

回到历史 && 来到未来

git log   #查看日志
红尘来去两袖空,天地乾坤在我胸 --git命令总结_第3张图片
history.png
git reset --hard ba4241e83647dbe85f9705b42b06cf918e878fa4
红尘来去两袖空,天地乾坤在我胸 --git命令总结_第4张图片
历史版本.png

可见此版本没有myself.txt的文件,用vi编辑器查看历史内容

git reflog #查看未来的版本
红尘来去两袖空,天地乾坤在我胸 --git命令总结_第5张图片
future.png

分支开发 && 分支合并

git branch test #新建分支test
git branch       #罗列出所有的分支
git checkout test #//切换到test分支
git checkout -b dev #创建并切换到dev分支
红尘来去两袖空,天地乾坤在我胸 --git命令总结_第6张图片
add branch.png

将本地新建的分支同步到远程

TIPS:在实际开发的很多IDE,可以自动创建远程分支,这一步往往可以省略。

git push origin test
git push origin dev
origin test.png

然后将本地dev分支上上传的图片push到github上

merge

在gitlab上面操作,进入项目下,点击merge request选项,然后选择你之前推到远端的dev branch和你要合并到哪个分支,比如你要合并到master上,点击merge request

解决冲突

冲突原因:

  • 多个成员修改不同文件
  • 多成员修改相同文件不同区域
  • 同时修改文件名和文件内容

在一些情况下,git可以智能合并,有些时候需要手动合并
上诉三种情况都可以用一种方式解决,就是在push之前先pull

手动合并

git status  #查看版本库状态
git mergetool  #使用工具

出现kdiff3图形界面,其中A区为修改前,B区为本地(local)版本库修改,C区为远程版本库(remote)信息,在最下方点击右键选择需要使用的版本库,修改后保存退出即可。之后:

git commit -m ""
git push origin master

这里就完成了conflict的手动合并
查看提交日志:

git log --graph --online

建立里程碑

所谓里程碑,就是版本号,每一个版本代表开发人员一段时间的工作。
在master merge分支代码之后的工程下,选择relsease


红尘来去两袖空,天地乾坤在我胸 --git命令总结_第7张图片
release.png

选择 public release之后,可以看到如下界面:


红尘来去两袖空,天地乾坤在我胸 --git命令总结_第8张图片
public release.png

可以直接下载打好的包,很多开源项目就是可以这样直接下载去项目中使用。

Fork Other's Repository

很多时候,我们需要拿到别人的仓库,进行后续或者协作开发
在对应的项目工程下,在github的左上角选择 fork,工程就会出现在我的github的主页上:


红尘来去两袖空,天地乾坤在我胸 --git命令总结_第9张图片
fork.png

然后我们需要再本地新建一个文件夹,将项目拉倒本地

git remote -v  #查看远程仓库的版本
git remote add upstream url
红尘来去两袖空,天地乾坤在我胸 --git命令总结_第10张图片
upstream.png
git pull upstream master
git push origin master

本人修改的代码可以通过pull request 请求合并,提交贡献

写在后面的话

1.origin
代码库(repository)可以存放在你的电脑里,同时你也可以把代码库托管到Github的服务器上。在默认情况下,origin指向的就是你本地的代码库托管在Github上的版本。
2.FETCH_HEAD
是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
3.git fetch 有四种基本用法

  • git fetch:这将更新git remote 中所有的远程repo 所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
  • git fetch remote_repo :这将更新名称为remote_repo 的远程repo上的所有branch的最新commit-id,将其记录。
  • git fetch remote_repo remote_branch_name :这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name
  • git fetch remote_repo remote_branch_name:local_branch_name :这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name ,并在本地创建local_branch_name 本地分支保存远端分支的所有数据。
    4.暂存区的概念很重要,了解了这个概念,git的很多命令你就知道在干什么了。


    红尘来去两袖空,天地乾坤在我胸 --git命令总结_第11张图片
    stage1.png

    红尘来去两袖空,天地乾坤在我胸 --git命令总结_第12张图片
    stage2.png

    红尘来去两袖空,天地乾坤在我胸 --git命令总结_第13张图片
    stage3.png

5.在每次提交代码前,养成使用 git diff 的好习惯
6.每天下班前,清空你的工作区,给明天一个愉快的开始!
7.如果你的项目组有很多同学,或者是你为很大的开源项目做贡献,建议你将每次提交的代码描述详细,尽量精确到第几行,实现什么功能。

FAQ

  • Access denied
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://git.xx/xxx/xxx.git/'

需要重新设置用户名和邮箱:

$ git config --global user.name "xxx"
$ git config --global user.email "xxx@xxx"
  • git pull 失败 ,提示:fatal: refusing to merge unrelated histories
    在git pull 时,增加一个可选项
git pull origin master --allow-unrelated-histories
  • 本地同步远端的git分支
    在本地新建并切换到dev分支,和远程的dev分支进行关联
git branch -b dev /origin/dev

上诉操作等同于:

git branch --all   #查看所有分支,发现只有master
git checkout dev #在本地创建dev分支
git branch dev #本地切换到dev
git push origin dev:dev  #本地dev和远端dev进行关联

查看本地分支和远程分支的对应关系:

git branch -vv

程序媛小白一枚,如有错误,烦请批评指正!(#.#)

你可能感兴趣的:(红尘来去两袖空,天地乾坤在我胸 --git命令总结)