Git基本操作

1,从远程库拉取项目

1,远程仓库,如,(https://code.aliyun.com/)注册账户登录
2,如果有项目组,应该看得到项目
3,复制项目地址
4,git clone 复制项目,一般会在当前目录下有个完整的项目,所以要 cd 到项目目录中

2,本地创建项目推送到空的远程库

1,将这个目录变成 git 可以管理的仓库
  git init  
2,关联远程仓库地址
git remote add origin https://github.com/cade8800/ionic-demo.git  

3,提交到远程库

1,添加到暂存区
  git add .        //所有文件
  git add a.txt    //某个文件
  git add test/*   //某个文件夹所有文件
2,提交到本地库
  git commit -m '说明'  //把文件提交到仓库
3,推送之前要先 pull 一下
  git pull --rebase origin master  //获取远程库与本地同步合并(远程库不为空必须做这一步)
4,推送到远程库
  //其中的origin是你在clone远程代码时,git为你创建的指向这个远程代码库的标签,它指向repository。为了能清楚了解你要指向的repository,可以用命令git remote -v进行查看。master是你远程的branch,可以用git branch -a查看所有分支,远程分支是红色的部分。然后确定好这两个值后,将值换掉即可
  git push --set-upstream origin master
  
  //同样根据自己的需要,替换origin和master。
两个命令的区别是第一条命令是要保证你的远程分支存在,如果不存在,也就无法进行关联。而第二条指令即使远程没有你要关联的分支,它也会自动创建一个出来,以实现关联。
  git push -u origin master

4,git 设置

这个用户名和密码,当你提交代码会标记是谁提交的。

$ git config --global user.name "wirelessqa"
$ git config --global user.email wirelessqa.me@gmail.com

5,git 基本命令

1,查看配置列表

git config --list

2,查看当前git仓库的状态

git status

3,git clone

该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为 git clone 命令的第二个参数,第二个参数可以省略。

git clone <版本库的网址> <本地目录名>

4,git remote

为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。

不带选项的时候,git remote命令列出所有远程主机。克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定

$ git remote
  origin

5,git fench

一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。

分支名可以省略,则取回所有分支

$ git fetch <远程主机名> <分支名>

6,git pull

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

$ git pull <远程主机名> <远程分支名>:<本地分支名>

在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支

Git也允许手动建立追踪关系。

git branch --set-upstream master origin/next

7,git push

 git push <远程主机名> <本地分支名>:<远程分支名>

6,删除操作

1,git rm -r <文件>            //创建一个删除操作,删除工作区和暂存区
2,git rm -r --cached <文件>   //创建一个删除操作,工作区需要,只是不希望被版本控制
2,git commit -m '注释'        //提交
3,git push -u origin master   //提交

7,撤销操作

1,撤销 add

git reset HEAD <file>

2,撤销 commit

查看自己的 commit

git reflog
git reset --soft HEAD^    //撤销一次 commit( 仅仅是撤回 commit 操作,代码仍然保留 )
git reset --soft HEAD~1   //撤销一次 commit( 仅仅是撤回 commit 操作,代码仍然保留 )
git reset --soft HEAD~n   //撤销 N 次 commit( 仅仅是撤回 commit 操作,代码仍然保留 )

  • mixed
    意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
    这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
  • soft
    不删除工作空间改动代码,撤销commit,不撤销git add .
  • hard
    删除工作空间改动代码,撤销commit,撤销git add .

如果commit注释写错了,只是想改一下注释,只需要:

  git commit --amend  //此时会进入默认vim编辑器,修改注释完毕后保存就好了。

3,撤销已经 push 的

撤销 push 有两种方法, reset 和 revert

  • reset 撤销到某次提交 此操作极其危险,不建议使用
1,git reset --soft 576b89dabf4ecb81f4f2cd353961f456556d93c7    //产生一个 commit

2,git push origin master -f    //因为此时比远程库版本提前,此时需要强行覆盖远程库

  • revert 撤销某次操作
1,git revert 576b89dabf4ecb81f4f2cd353961f456556d93c7 
2,git push origin master

建议,你可以用git revert来撤销已经提交的更改,而git reset用来撤销没有提交的更改

8,分支操作

  • 创建分支 这条命令不会自动切换到新的分支上去
  git branch <branckName>
  • 切换分支
  git checkout <branckName>      //切换分支
  git checkout -b <branchName>   //创建并切换分支
  • 查看分支
  git branch  //查看所有分支,* 代表当前分支
  git branch -v  //查看分支详情
  • 删除分支
  git branch -d <branchName>  //删除一个干净的分支
  git branch -D <branchName>  //强制删除一个分支
  • 重命名分支
  git branch -m <branchName> newName
  • 合并分支
 git merge <branchName>  //将分支合并到当前分支

 git merge --no-ff -m "msg" <branch_name>  //合并分支时禁用Fast forward模式,会产生一个新的 commit
  • 退回冲突前状态
  git merge --abort

git merge --abort将会抛弃合并过程并且尝试重建合并前的状态

警告:运行git-merge时含有大量的未commit文件很容易让你陷入困境,这将使你在冲突中难以回退。因此非常不鼓励在使用git-merge时存在未commit的文件,建议使用git-stash命令将这些未commit文件暂存起来,并在解决冲突以后使用git stash pop把这些未commit文件还原出来

  • 查看冲突的文件列表
git ls-files -u  | cut -f 2 | sort -u

9,暂存:将修改的内容暂存起来

  • 执行存储
 git stash    //默认备注
 git stash save 'message'    //添加备注
  • 查看存储列表
 git stash list
  • 显示第 num 个改动
 git stash show  stash@{$num}  -p   
  • 应用第 num 个存储
 git stash apply stash@{1} 
  • 应用并删除第 num 个存储
 git stash pop stash@{$num} 
  • 删除某个存储
 git stash drop stash@{$num} 
  • 清空缓存
 git stash clear

10,配置 SSH

没有配置 SSH 的时候,使用 SSH 方式 clone 会报错,每次 push 都需要输入账号密码。

1,生成密钥

 ssh-keygen -t rsa -C "这里换上你的邮箱"

执行命令后需要进行3次或4次确认:

  • 确认秘钥的保存路径(如果不需要改路径则直接回车);
  • 如果上一步置顶的保存路径下已经有秘钥文件,则需要确认是否覆盖(如果之前的秘钥不再需要则直接回车覆盖,如需要则手动拷贝到其他目录后再覆盖);
  • 创建密码(如果不需要密码则直接回车);
  • 确认密码;

在指定的路径下会有 id_rsa 和 id_rsa.pub 两个文件,其中 id_rsa 是私钥,id_res.pub 是公钥。

2,github 配置

(1)打开配置项:

(2)选择 SSH GPG keys:

(3)选择 new SSH key

(4)打开 id_res.pub,把内容拷贝到 key 下的输入框

(5)保存成功就可以使用 ssh clone 了。

11,切换远程仓库

(1) 查看当前远程源

$ git remote -v
origin  https://github.com/fucn569/weather_django.git (fetch)
origin  https://github.com/fucn569/weather_django.git (push)
#origin为此项目的远程源名称

(2) 删除当前远程源

$ git remote rm origin
#再使用git remote -v无输出信息,则成功删除

(3) 添加新的远程源

$ git remote add origin git@gitee.com:longxiaqiu/weather_django.git
#origin为远程源名称,git@gitee.com:longxiaqiu/weather_django.git为ssh链接

(4) 关联本地与远程源的分支

git push --set-upstream origin main
posted @ 2021-02-20 17:59  primaryC  阅读(98)  评论(0编辑  收藏  举报