Git/GitHub 常用操作
文章目录git基本概念常用命令配置用户签名git基本概念四个工作区Workspace: 工作区,就是你平时存放项目代码的地方Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本Remote: 远程仓库,托管代码的服
文章目录
原生Git
git基本概念
四个工作区
Workspace: 工作区,就是你平时存放项目代码的地方
Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表
Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
四种状态
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified.如果使用git rm移出版本库, 则成为Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
本地操作
配置用户签名
方式一 (单个仓库有效)
git config user.name 用户名
git config user.email 邮箱
配置信息会保存在当前仓库目录下的.git/config
文件中。
方式二 (全局有效)
git config --global user.name 用户名
git config --global user.email 邮箱
该种方式配置信息会保存在系统盘的系统用户目录下的.gitconfig
文件中,保存格式同上面一样。
初始化仓库
git init
查看Git状态
git status
Git添加代码到暂存区
# 添加一个或多个文件到暂存区
git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
git add [dir]
# 添加当前目录下的所有文件到暂存区
git add .
Git提交代码
# 提交代码并加上备注信息
git commit -m "[message]"
# 提交指定文件
git commit [file1] [file2] ... -m "[message]"
# 直接提交
# -a参数设置修改文件以后不需要执行 git add 命令,直接提交
git commit -am "[message]"
Git修改并提交代码
# 修改代码文件,查看状态
git status
# 再次添加到暂存区
git add filename
# 再次查看状态
git status
# 提交
git commit
# 查看版本信息
git reflog
Git版本切换
# 查看版本信息
git reflog
# 更加详细的显示
git log
# 切换版本
git reset --hard [版本号]
Git分支常用命令
# 查看分支
git branch -v
# 创建分支
git branch [新分支名]
# 删除分支
git branch -d [分支名]
# 修改分支
git branch -m [旧名字] [新名字]
# 切换分支
git checkout [分支名]
# 合并分支
git merge [分支名]
如何解决合并分支冲突
合并分支时,两个分支在同一个代码的同一个位置都有修改,Git无法判断,如何去留?
这个时候需要手动修改文件,修改完成后再次提交就合并成功了。
远程操作
创建别名
# 复制远程仓库的地址然后创建一个别名
git remote add myProject [远程仓库地址]
# 查看远程仓库地址和别名
git remote -v
推送本地库到github
# 推送分支到远程仓库
git remote [别名] [分支名]
# 上面的命令可能或报错:error: Unknown subcommand
# 用以下命令即可
git push [别名] [分支名]
第一次推送需要windows凭据,会自动弹出一个窗口,在浏览器中输入账户和密码即可。
如果出现10053错误,那么使用git config --global http.sslVerify false
来解除https的ssl的凭证。
在提交的时候,有时候会出现这样的错误:
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这是因为在写代码之前,没有先更新本地项目造成的,所以我们得想办法先更新一下本地项目,但是我们又写了新的代码,有两种解决方案:
-
允许不相关历史提交,并强制合并
git pull origin master --allow-unrelated-histories
-
强制提交
git push --force origin master
拉取远程库到本地
git pull [别名] [分支名]
解决pull的时候速度慢:git config --global http.postBuffer 524288000
克隆远程库
git clone [url地址]
区别:
- fork: 复制一份别人的仓库到自己的远程仓库中,后期可以使用pull request请求别人合并自己新增加的功能。
- clone: 将别人的项目clone到自己的本地电脑中。
- pull: 从远程获取最新版本并merge到本地。
团队内协作
邀请团队成员:
github项目->Settings->Collaborators->Manage access->Add people
跨团队协作
先fork一份到自己的github中,修改完毕以后,先提交,然后Create pull request给其它团队的管理者审核,对方同意以后,就可以合并。
github免密登录
-
在windows 用户目录下面找到.ssh 文件夹
-
在当前目录下面打开git命令行,输入以下命令生成密钥:
ssh-keygen -t rsa -C [github邮箱]
-
复制id_rsa.pub中的内容
-
在github账号中配置,将复制的公钥粘贴到以下地址中:
Settings->SSH and GPG keys
然后pull的时候就可以使用ssh,不需要输入用户名和密码。
JetBrains 的IDE集成Git和GitHub
集成Git
初始化本地库
集成Git
VCS->启用版本控制集成->确定
取消版本控制
设置->版本控制->选中项目点减号
添加忽略文件
在根目录创建一个.gitignore文件,然后将要忽略的文件添加进去。
集成Git切换版本
1.添加到暂存区
右键根目录->Git->添加
2.提交
右键根目录->Git->提交->写上备注信息->点击提交
3.查看版本
当提交多次以后,可以查看提交过的历史版本:
点击左下角的Git->Log
4.切换版本
右键要切换的版本,然后点击签出修订...
,即可切换版本。
可以看到指针此时指向了v2。
如果要回到最新版本,右键最新版本,然后签出到master。
集成Git创建、切换分支、合并分支
创建分支
菜单->Git->新建分支…
切换分支
左下角->选择分支->签出
合并分支
首先切换到要合并的分支(一般是master)-> Git -> 合并 -> 选择分支 …
解决分支冲突
根据需要手动选择即可,第三个选项是自己手动修改。
集成GitHub
在ide中配置GitHub
文件->设置->版本控制->GitHub->点击+添加即可
推送项目到GitHub
共享项目到GitHub
Git -> GitHub -> 在GitHub上共享项目 -> 在描述中写上项目别名 -> 点击确定
push
- 修改代码并提交代码
- Git -> 推送
从GitHub 拉取项目
pull的目的就是获取项目的最新版本,并merge到本地。
Git -> 更新项目
从GitHub克隆项目
VCS -> 启用版本控制 -> Git -> 克隆
码云Gitee
Gitee简介
Gitee与Github功能类似,但是相比于github而言,gitee有两个优势:一是速度快,二是支持免费的私密项目。
官网
JetBrains的IDE集成码云Gitee
1.添加插件gitee
2.登录码云
3.push
4.pull
更多推荐
所有评论(0)