简介

主要整理一些自己在公司用的比较多的部分,不至于说的更多,反而更迷糊,想要学习详细的Git教学可以去专门的网站。相当于边学边记了,共同进步!

这篇文章里会把常用的命令跟作用跟大家说一下,日常办公足够用了,对某个可能没说到功能大家也可以点对点去搜一下学的更快。

首先大家要用到Git,一个很大的原因是公司代码存放要用到,所以这篇文章主要介绍公司中经常用到的一些命令(对症下药)

至于Git账户的一些配置,此文章就先不说了,后边等写一个专门配置Git的。主要说一下命令了。

 

正文
 

最普通的一次提交过程:先拉取服务器的内容,然后将你的修改添加到暂存区,然后提交修改文件到工作区,最后将修改的推送到服务器


git pull    --拉取服务器的内容
git add [filename]   --提交修改文件进暂存区
git commit   -m "此次修改备注"  --提交修改文件到工作区
git push origin branch-name   --推送到某个分支


git status   --查看当前状态,列出所有新修改,暂存区文件的修改状况
git diff   --查看工作区与版本库的区别
git log   $ git log --pretty=oneline     --可以查看提交历史
git reset --hard commit_id   --回退到某次版本
git reflog    --查看命令历史


git checkout  --[file]    把文件在本地区的修改全部撤销,无论是添加或者删除了(将这个文件恢复到最近一次提交的状态)(取消git add  |  git commit)
git reset HEAD [file]   把暂存区的修改退回到本低(取消git add)
git reset --soft HEAD^    取消本次的已提交的git commit 

git fetch --all  下载远程的库的内容,但是并未做任何代码合并的合并动作
git reset --hard origin/master   拉取远程master分支上的代码,放弃本地修改,强制更新


进阶

git clone git@github.com:michaelliao/gitskills.git
将git clone后面的换成自己的Git库地址,就可以克隆了

git  branch []   创建分支
git checkout []   切换分支   (git switch []   也可以)
git checkout -b []   创建并切换分支 git switch -c []
git branch   查看列出所有分支 当前分支前会有一个"*"
git merge []   合并指定分支到当前分支
git branch -d []   删除某个分支
git branch -D []    强制删除某个分支

git log --graph    查看分支合并的情况
git log --graph --pretty=oneline --abbrev-commit    查看分支合并的情况

git stash   储藏当前工作现场
git stash list   查看储藏的工作现场
git stash apply   恢复现场
git stash drop   删除储藏的现场
git stash pop   恢复并删除储藏的现场
git stash apply stash@{0}    恢复指定的储藏现场

git cherry-pick [commit_id]    复制一个特定的提交到当前分支
git cherry-pick --quit    退出复制

git remote add origin [git@gitee.com:liaoxuefeng/learngit.git]    关联一个远程库
git remote    查看远程库的信息
git remote -v    查看更详细的信息
git remote rm origin    删除已有的远程库

git push origin branch-name    推送到某个分支
git pull   拉取
git checkout -b branch-name origin/branch-name    在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name    建立本地分支和远程分支的关联

git tag <tagname>    新建一个标签
git tag -a <tagname> -m ""   可以指定标签信息
git tag    查看所有标签信息
git tag -d <tagname>    删除标签
git push origin <tagname>    推送某个标签到远程
git push origin --tags    一次性全推送
git push origin :refs/tags/<tagname>    可以删除一个远程标签。

$ git config --global alias.co checkout     可以给命令改别名

----------------

使用过程中出现的问题

1.分支切换

从服务器上拉下来的文件,我在本地做了修改,用git status 查看后,可能会出现如下所示,第一个框绿色部分代表我进行了git add 操作的文件,但是还没有git commit。第二个框里面的代表在本地原有文件上所做的修改(还没有git add等操作)。第三个框表示新添加的文件。这个时候我进行分支切换的时候,有可能会报错,因为我修改的这几个文件有可能再另一个分支也存在,我修改了此分支的,所以不让切换到另一个分支,会发生冲突。这时候如果想切换分支,有几种方法可以参考:1.先git commit 提交到工作区  2.git checkout --[filename] (将这个文件恢复到最近一次提交的状态,慎重选择,因为这样会把本地修改的内容给删成最后提交的状态)    3.git stash  (将当前工作现场“储藏”起来,等以后恢复现场后继续工作)。切回来,git stash apply 回到最新的储藏。 git stash list 显示多次的储藏,根据显示的版本回到之前的储藏。

2.合并分支

合并分支的时候会出现冲突

<<<<<<< HEAD
123
=======
12
>>>>>>> feature1

 

多人协作

多人协作的工作模式步骤:

  1. 第一步,用git push origin <branch-name>推送自己的修改的部分内容;

  2. 如果推送失败了,可能是远程分支比你的本地更新,所以用git pull将远程的内容拉取下来试图合并;

  3. 如果合并有冲突,则解决冲突之后,在本地提交一次;

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就可以了

 

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

 

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐