Git 命令行——分支基础练习与操作

**在完成下列操作过程中,请在每一步操作后都执行以下两步检查,并观察变化:

1)检查文件系统中文件内容;git log //查看详细信息, 2)Git status查看文件状态 3)Git branch
-a查看当前所在分支;**

实际操作1(包含一些问题,更能够清晰的认识)

一、分支的创建与使用

  1. 创建一个本地仓库,新建readme.txt, 输入学号,保存。提交到本地仓库。(这是第一周学习的内容,详细步骤在此不单独说明)
    Git init 路径/仓库名      创建git仓库
    Cd 路径/仓库名                 到指定路径下
    Vi readme.txt      创建并编辑文本
    Esc (退出i) (输入):wq (按)enter (退出文本)       退出文本
    Git add readme.txt        添加到暂存区;
    Git commit -m “第一次提交——记录提示”        提交——记录提示
  2. git branch testing; 创建一个分支
  3. git checkout testing 切换到testing 分支
  4. Vi readme.txt 修改readme.txt, 增加一行姓名,保存;
  5. 新建一个hello.py文件;
    (//此时,分支testing上有hello.py & readme.txt.但是切换到master分支时,并没有hello.py文件。)
    Vi hello.py 创建、编辑文件
    ESC :wq enter 退出文本
    Git add hello.py 添加至暂存区
  6. 提交;
    Git commit -m “第二次提交”
  7. git log 查看提交历史
  8. git checkout master 切换至master分支

思考:目录中的文件内容发生变化了吗? 为什么?
(1)(工作目录中文件的内容在第6步操作后是否发生变化。)
从testing切换到master上时,本来在testing分支上的2个文件,只剩下了readme.txt。
(2)master分支是否改变?为什么?
切换到master时,master此时并未更新,所以只有readme.txt,没有hello.py;因为之前是在testing分支打开了readme.txt,此时testing分支是最新版本,master的版本落后,因此只有testing分支与master合并后,才会变化。

  1. git log 查看提交历史
  2. git merge testing

思考:目录中的文件内容发生变化了吗? 为什么?
(变了,此时testing分支的版本与master进行了合并,master现在是最新版本。现在master里面包含了readme.txt与hello.py)

二、Github远程仓库的使用

(前提:以小组为单位,组员合作完成。)

  1. 组长在github上新建一个远程仓库,创建一个readme.txt.
    每个组员把该远程仓库 clone 下来。

思考:本地有几个分支?当前在哪个分支?
(2个,本地master)
说明:
从一个远程跟踪分支checkout一个本地分支,会自动创建一个所谓的“跟踪分支”,对应的远程分支称为“上游分支”。
git clone 命令会自动地创建一个跟踪origin/master的master分支;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7B1UbiVF-1584691914647)(file:///C:/Users/10627/AppData/Roaming/Tencent/QQ/Temp/R%29A%5BZB5IH_63ZHO7%[email protected]__H.jpg)]
这里的remotes/origin/master就是跟踪分支。
默认是跟踪远程的master分支。
这个分支存在,但是不能直接修改。所以,clone下来的分支有2个。目前所在的分支是本地的master。

  1. git pull

思考:该操作的作用是什么?
git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并.
格式:
git pull <远程主机名> <远程分支名>:<本地分支名>
eg: git pull origin next:master
(这等同于先做git fetch,再执行git merge。
git fetch:相当于是从远程获取最新版本到本地,不会自动合并。)


远程主机名如何设置:(遇到的问题,解决)
git remote add origin [email protected]:projectclassB171/S***_B17-1.git (我这边远程项目的ssh的url)
git remote -v 查看远程
origin git remote rm origin 删除远程
origin git push -u origin master
//第一次push的时候要- u ,便利


思考:这里是引用目录下的文件有变化吗? 什么时候会有变化?
请考虑两种情况的区别:
(1) 此时组内没有任何其他同学已经完成 第3步操作
无变化
(2) 此时组内至少有一位同学已经完成 第3步操作
会变化,其他人修改后推送至远程仓库,此时更新仓库版本,内容会有变化。
git push 的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,
例如 git push origin master:refs/for/master
即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名。

  1. 修改readme.txt, 输入你的学号,保存。提交到本地仓库。(这是第一周学习的内容,详细步骤在此不单独说明)
  2. git push origin master

思考:该操作的作用是什么?
(使用本地的对应分支来更新对应的远程分支)
命令用于将本地分支的更新,推送到远程主机。
(主要是自己本地更新后,推送至远程主机上,更新远程主机的版本)

  1. 再次 git pull origin master

思考:目录下的文件有变化吗? 什么时候会有变化?
当远程主机又有更新了之后,pull下来会有变化.

  1. git log 查看提交历史

三、命令行小实践

Git 命令行——分支基础练习与操作Git 命令行——分支基础练习与操作

初学git操作命令行,自己的一些实践与汇总,希望多多交流

(有问题的私法我,谢谢~)