git命令

2019-12-17  本文已影响0人  8ffaa5fcca34

git

git和svn的区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了

远程仓库

注册github账号,如果本地的git仓库和github仓库之间的传输是通过ssh加密的,需要设置如下:
1.创建SSH Key 在用户主目录下,看看有没有.ssh目录,如果有,再看该目录下有没有id_rsa 和 id_rsa.pub文件,如果有跳过,如果没有,打开命令行,输入ssh-keygen -t rsa –C "youremail@example.com" 
id_rsa 是私钥,不能泄露,id_rsa.pub是公钥,可以放心告诉任何人
2.登录github,打开“settings”中的SSH Keys页面,点击“Add SSH Key",输入任意title,在Key文本框中粘贴id_rsa.pub文件的内容 点击按钮完成

常见的分支

master dev bug

填写用户名和邮箱

git config --global user.name ""
git config --global user.email ""

git init 初始化

当前目录下会多一个.git的目录,该目录是Git来跟踪管理版本的。该目录下的文件需谨慎修改。否则会把git仓库破坏掉

git clone 克隆

git clone https://github.com/tugenhua0707/testgit.git 将远程库克隆到本地库中

git status 查看项目的当前状态

git add

git add readme.md 将readme.md添加到暂存区
git add . 添加当前项目的所有文件(包括被修改的文件和新文件,不包括被删除的文件)
git add -u 添加当前项目的所有文件(仅包含被修改的文件)是git add --update的缩写
git add -A 添加当前项目的所有文件(包括被修改的文件和新文件以及被删除的文件)是git add --all的缩写

git commit -m 'readme.md提交'

把文件提交到仓库   'readme.md提交' 是提交的注释

git log 查看历史记录 显示所有提交过的版本信息,看不到退回前的版本记录

git reflog 查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

cat readme.md 查看文件内容

rm readme.md 删除readme.md文件

git diff 查看某文件改了哪些内容 查看执行 git status 的结果的详细信息

git diff readme.md
git diff 尚未缓存的改动 比较工作目录(Working tree)和暂存区域快照(index)之间的差异
也就是修改之后还没有暂存起来的变化内容。
git diff --cached git diff --staged 查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
git diff HEAD 查看已缓存的与未缓存的所有改动 显示工作版本(Working tree)和HEAD的差别
git diff --stat  显示摘要而非整个 diff

git remote

git remote add origin https://github.com/tugenhua0707/testgit.git 将本地库的内容推送到远程(用于远程仓库为空时并且先有本地库后有远程库时)
git remote 查看远程库的信息
git remote -v 查看远程库的详细信息

git stash 将当前工作现场隐藏起来

场景:在开发中接到一个bug,需要创建bug分支来修复它。但是当前dev分支上的工作还没开发完,无法提交,于是通过git stash 将当前工作现场“隐藏”起来,等以后恢复现场后继续工作。
git stash 
git checkout master
git checkout -b bug 在master分支上创建临时分支bug

git stash list 工作现场列表
恢复工作现场:
1.git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2. 使用git stash pop,恢复的同时把stash内容也删除了。

git checkout 切换

git checkout -- readme.md 将未添加到暂存区的内容撤销掉
git checkout -b dev  创建并切换分支
git checkout dev  切换分支

git branch 查看分支

git branch 查看所有分支和当前分支
git branch -d dev 删除dev分支
git branch dev 创建dev分支
git branch --set-upstream dev origin/dev  将本地dev分支与远程origin/dev分支建立连接

git pull 将远程主机的最新内容拉下来后直接合并

git pull = git fetch + git merge
缺点:可能会产生冲突,需要手动解决

git fetch 将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中


git push 推送

git push -u origin master   将当前分支推送到远程 由于远程是空的,第一次推送时,加上-u参数。远程的master分支和本地的master分支产生关联。以后推送和拉取可以简化命令
git push origin master 将本地最新代码推送到远程

git reset 版本回退

git reset --hard HEAD^  把当前的版本回退到上一个版本
git reset --hard HEAD^^  把当前的版本回退到上上个版本
git reset --hard HEAD~100 回退前100个版本
git reset --hard 6fcfc89  回退到6fcfc89版本

git merge 合并

git merge dev 合并dev分支到当前分支
git merge --no-ff -m '注释' dev    合并分支,为了避免冲突,在合并时,使用带参数 --no-ff 来禁用“Fast forward"模式
上一篇下一篇

猜你喜欢

热点阅读