Git常用命令

前言

复习git时重新记录了一边,所以记录得比较简洁,以便一时没用Git后面又把各种命令啥的都忘了。
Git下载地址
使用:
在使用前必须配置账号和邮箱
git config --global user.name “wukong.sun” # 请换成你自己的名字,除非你凑巧也叫wukong.sun
git config --global user.email “[email protected] # 同上
global收全局配置,所有连接都可以用,如果想用不同的账户邮箱登录,则可以进到这些本地repository的目录后,执行类似下面命令:
git config user.name “xingzhe.sun”
git config user.email “[email protected]

上述命令没有加“–global”参数,因而是针对具体本地repository的。这些配置的优先级高于全局配置,因此连接时会起作用。
想要用SSH方式clone项目时,还需要配置SSH
生成ssh key pair
ssh-keygen -t rsa -C “[email protected]
查看公钥
cat ~/.ssh/id_rsa.pub
把公钥加到github’或者gitlab等管理平台上,后面就可以直接用ssh’方式clone项目了

Git原理简单图解

Git常用命令_第1张图片
Git常用命令_第2张图片

常用Git命令解释

git init—初始化本地仓库
git add —提交到暂存区
git commit —提交到本地仓库(本地master分支)
git clone—clone远程仓库到本地
git push—同步远程仓库到工作区
git pull—将本地仓库推送到远程参股
git status—本地仓库的当前状态
git diff—查看与前一个版本的区别
git log—显示提交日志

关联一个远程仓库

要关联一个远程库,使用命令git remote add origin https/ssh;

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

版本回退

head表示当前版本,head^表示前一个版本,head^^表示,前100个版本就是head~100;
当我们要进行版本回退时:
$git reset -hard head^
$git reser -hard 1094a(版本号,git log 可以显示)

$git relog —显示你的所有历史提交,包括已经撤销的
$git checkout – fileanme—丢弃工作区的修改
$git reset HEAD filename—丢弃暂存区的的修改,重新放回工作区

分支

  1. 第一步,dev分支,然后切换到dev分支:

    $ git checkout -b dev
    Switched to a new branch 'dev

  2. git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
    $ git branch dev
    $ git checkout dev
    Switched to branch 'dev'

  3. 然后,用git branch命令查看当前分支:
    $ git branch
    * dev
    master
    git branch命令会列出所有分支,当前分支前面会标一个*号。

  4. 然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:
    Creating a new branch is quick.
    然后提交:

    $ git add readme.txt
    $ git commit -m "branch test"
    [dev b17d20e] branch test
    1 file changed, 1 insertion(+)

  5. 现在,dev分支的工作完成,我们就可以切换回master分支:
    $ git checkout master
    Switched to branch 'master'

  6. 现在,我们把dev分支的工作成果合并到master分支上:

    $ git merge dev
    Updating d46f35e..b17d20e
    Fast-forward
    readme.txt | 1 +
    1 file changed, 1 insertion(+)
    git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

    注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast-forward

  7. 合并完成后,就可以放心地删除dev分支了:

    $ git branch -d dev
    Deleted branch dev (was b17d20e).
    删除后,查看branch,就只剩下master分支了:

    $ git branch
    * master
    因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

远程先开好分支然后拉到本地
git checkout -b feature-branch origin/feature-branch//检出远程的feature-branch分支到本地
本地先开好分支然后推送到远程
$ git checkout -b feature-branch//创建并切换到分支feature-branch
$ git push origin feature-branch:feature-branch//推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)

Git多人工作模式

多人协作的工作模式通常是这样:

  1. 先,可以试图用git push origin 推送自己本地某分支的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
  5. 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/

小结

  • 查看远程库信息,使用git remote -v;
  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用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 pull,如果有冲突,要先处理冲突。

你可能感兴趣的:(Git/GitHub)