git常用命令大全

git是分布式的,不需要联网,每台电脑都是一个中央仓库
origin是远程仓库的名字

开始

git init在当前路径下创建git仓库
git add readme.txt 把文件修改添加到暂存区,使用命令git add ,注意,可反复多次使用,添加多个文件;
git commit -m "add project"把暂存区里的所有修改保存到本地仓库
git status查看当前的状态,哪个文件被修改了之类的. 查看的是提交之前,被修改的文件,或者没有add,没有commit的文件,只要commit之后,这里就看不到什么信息了
git diff readme.txt 具体查看这个文件怎么被修改了 diff也就是difference
注:
commit之前要先add.即便是之前已经add过了的也要在add一次.
如果修改了一个文件两次,只有第一次把修改add了,也就是放入暂存区了,那么commit的时候只会commit第一次的修改

关联远程仓库

git remote add origin [email protected]:mengao/learngit.git把本地仓库和远程仓库关联起来,远程仓库名字:origin
修改远程仓库
git remote set-url origin [url]

git remote 显示远程仓库的名字
git push origin master/dev //推送分支

git log //查看当前,和之前的所有版本,也就是提交历史

回退版本

HEAD 表示当前的版本

git reset --hard HEAD^//回退到上一个版本
git reset --hard HEAD~100 // 会退到之前100个版本

回退

git回退到旧版本后,再用git log 就不会显示新版本了.最新的就是当前的版本.如果知道最新的版本号,可以通过
git reset --hard 1093a 来指定回到未来的版本.版本号可以简写前几位,git会自动寻找.

如果找不到未来的版本id
git reflog //记录了所有的每一次的命令.就可以从中寻找到commit id了,查看命令历史.

几个概念:

  • 工作区:项目的目录
  • 版本库:工作区里的一个.git的目录.
  • 暂存区:HEAD和master分支
  • 分支:git会自动为我们创建一个master的分支
    每次add都会把修改放到暂存区.然后commit会把暂存区里的所有修改提交到分支上.

git checkout -- readme.txt//回到最近一次commit或add时候的状态.

git reset HEAD readme.txt//删除暂存区.但是文件里的修改并没有删除,需要再用checkout命令

git rm readme.txt //删除某个文件
等价于:
rm readme.txt.
然后 git add/rd readme.txt

git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

可以给一套代码设置两个远程库

git clone [email protected]:mengao/test.git

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令

分支

0.查看分支
git log --graph --pretty=oneline --abbrev-commit
git log

git checkout -b dev :首先,创建dev分支,然后切换到dev分支:
等价于以下两条命令:
git branch dev
git checkout dev

git branch 查看当前分支

git merge dev 合并指定分支到当前分支
git branch -d dev删除分支

git log --graph查看分支合并图
但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

分支介绍:

master分支是主分支,因此要时刻与远程同步;

dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
创建新的bug分支进行修复,修复完之后合并,最后删除.

feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定

如果从remote clone下来的项目,默认只有master分支,需要手动切换到dev分支

如果修改了一个文件,add之后没有commit,那么要切换分支的话是不可能的.就会要你commit或者存到stash里才可以.

冲突处理

1.一个人已经push了,另一个人push时候冲突的处理:
先push
git push origin dev
发生报错说远程仓库已经有人push且发生冲突了
那么pull
git pull
如果pull失败了,原因可能是没有指定本地dev分支与远程dev分支的连接.设置dev和origin/dev的链接
git branch --set-upstream-to=origin/dev dev

处理冲突的代码,然后:
git add ..
git commit ..
最后再次push
git push origin dev

stash

git stash list //查看stash内容
git stash //把当前的操作存储到stash里,后续可以恢复过来
git stash pop //恢复stash内容的同时,删除stash
git stash apply stash@{0} //

你可能感兴趣的:(git常用命令大全)