简介
主要整理一些自己在公司用的比较多的部分,不至于说的更多,反而更迷糊,想要学习详细的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
1. git fetch --all 下载远程的库的内容,但是并未做任何代码合并的合并动作 2. git reset --hard origin/master 拉取远程master分支上的代码,放弃本地修改,强制更新
进阶
1. git clone git@github.com:michaelliao/gitskills.git 2. 将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.合并分支
合并分支的时候会出现冲突
1. <<<<<<< HEAD 2. 123 3. ======= 4. 12 5. >>>>>>> feature1
多人协作
多人协作的工作模式步骤:
第一步,用git push origin <branch-name>推送自己的修改的部分内容;
如果推送失败了,可能是远程分支比你的本地更新,所以用git pull将远程的内容拉取下来试图合并;
如果合并有冲突,则解决冲突之后,在本地提交一次;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就可以了
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。