git安装与使用
git下载
配置
桌面鼠标右键,点击Git Bash Here
(1 )设置用户名称和登录邮箱
$ git config --global user.name "sunt998" # github账号名称
$ git config --global user.email '1487415257@qq.com' # github注册邮箱地址
(2) 查看配置信息
git config --list # 查看配置信息
常用命令
git初始化一个项目
准备:在桌面上新建一个项目文件夹,文件夹里新建一个ReadMe.txt文件
命令行:进入到项目所在目录
git status (查看是否被git托管)
git init (被git托管,同时创建一个.git文件夹,用于存放历史修改记录) # 用来初始化git项目,并生成.git文件夹
如果提示 “Not a git repository ” 意味着,不是一个git项目,需要使用git init进行初始化
如果提示 “Untracked files ” 意味着,文件没有被追踪
git管理(追踪)某个文件
告诉git,管理某个文件(追踪某个文件)
git add <文件名> # 添加一个文件进行追踪
git add . # 添加所有的文件
git提交一个被管理的文件
git commit -m '注释提交的文件'
如何把代码放到GitHub上
点击“新建仓库”输入“仓库名称” # po有个 desc 的描述,可选后面三个,“readme” “忽略文件” “许可证”,
都不选择。此处,下一步,会有提示。使用cmd进入到 需要的提交的项目的目录下。
git init # 初始化项目
git add . # 把当前目录下的所有文件,交给git管理
git commit -m "first commit" # 提交
git remote add origin https://github.com/hitheima/po.git # 建立远端连接
git push -u origin master # 推送到远端
如果push一个已经存在的repository
git remote add origin https://github.com/sunt998/01.git
git push -u origin master
搞清楚commit(自己提交的状态,一直有被记录)和push(将项目推到github的仓库)
commit:是在本地仓库进行提交,如果提交多次,就会在本地仓库.git里面记录提交的具体时间
push:是跟远端进行推送的一个过程,将本地仓库项目推送到远端上
如何下载github项目
download zip 下载
- - 进入项目主页,右侧有一个绿色的按钮,点击后,选择download zip即可
clone克隆
- 从远端第一次放到本地的过程叫做克隆(cheakout)
- 在github主页上,项目会有一个地址,通过sourceTree进行克隆
- sourceTree点击新仓库,从url克隆。
- 将“xxxx.git”的地址,赋值到soureceTree中的url中。
- 选择,存放路径即可。
PULL
作用,本地已经和远端建立连接的情况下(已经clone过了),将远端的代码,同步到本地。
(让本地保持和远端一样)。这个过程叫做pull
在sourceTree中,使用拉取,点击确定。
切换版本
切换版本,就是可以快速的预览,之前提交的版本的文件的情况。
在sourceTree中,直接双击,出现Head标记即可。
多次commit后再push
如果本地项目进行修改之后,sourceTree会提示,修改文件的个数。(修改test_network.py文件)
如果想使用sourceTree进行提交,需要先勾选“暂存的文件”(需要提交什么,就勾选什么。允许部分提交)(相当于git命令中的add方法)
init 是一个git管家
status 查看管家管理的内容及状态
add 告诉管家哪些文件交由管家管理
commit 让管家记录当前状态
push 让本地git管家将所有东西交给远端github管家管理
clone 让远端管家将所有文件交给本地管家一份
pull 让本地管家同步远程管家的最新状态
冲突与解决
冲突发生的情况,在多个人开发中,出现了,同一个文件同一行代码的修改。会产生这个问题。
在pull的时候,会发生。(当远端的某一个文件的某一行。和本地不同, 并且不是之前的版本)
解决的问题的方法,需要自己权衡。保留或者删除。删除多余的<<<< ===== >>>> 相关信息、
<<<<<< HEAD
print(1)
======
print(2)
>>>>>> 8ux8vus8fsd8fus8dufs
HEAD部分是自己的代码
远端版本号的代码是远端的代码
接下来模拟一遍冲突以及解决冲突流程
A程序员:对test_network.py文件的52行进行改动,将12g改为13g.并push到服务器
B程序员:对test_network.py文件的52行进行改动,将12g改为15g.并commit,当B程序员想要将它的改动push到服务器时。
会提示报错,报错信息为:
(e.g., 'git pull ...') before pushing again.
让你必须先pull远程服务器,再push
当你拉取pull时,会发生冲突,这是要你根据需求来合并冲突部分
<<<<<<< HEAD
def test_mobile_network_15g(self): # B程序员要修改的
=======
def test_mobile_network_13g(self): # A程序员修改,并push到服务器的
>>>>>>> 8f208e4d8584ca9ee4f4b98a4f6d688665217596
self.network_page.click_more()
self.network_page.click_network()
self.network_page.click_first_network()
self.network_page.click_9g()
如果B程序员修改的更好些,修改如下:
def test_mobile_network_15g(self):
self.network_page.click_more()
self.network_page.click_network()
self.network_page.click_first_network()
self.network_page.click_9g()
在提交并push到远程服务器,就可以解决冲突了。