git常用命令操作
-
git add 文件名
(1)可以用它开始跟踪新文件
(2)把已跟踪的、且已修改的文件放到暂存区
(3)把有冲突的文件标记为已解决状态 -
git fetch
拉取线上远程仓库同步到本地远程仓库 -
git checkout -b newbranch origin/basebranch
直接从远程仓库的basebranch分支checkout 一个新分支newbracnh到本地,这个basebranch实际是从本地的远程仓库checkout的 ,所以执行这个操作之前,先git fetch一下线上的远程仓库到本地的远程仓库。 -
git push origin -d 分支名
删除线上远程分支
git push -u origin 分支名
推送到线上分支,-u代表本地该分支是否会跟踪线上的这个分支。如果线上分支有变化,使用git status是可以看到变化的
git branch -d 分支名
删除本地分支: -
git remote show origin
查看远程分支和本地分支的对应关系: -
git branch -m <oldbranch> <newbranch>
给分支改名 -
git pull <远程主机名> <远程分支名>:<本地分支名>
如果<远程分支名>:<本地分支名>同名,可以改为git pull <远程主机名> <分支名>
git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写。 -
git remote add origin git@github.com:ForgetAndRemember/wx_github_test1.git
为本地仓库添加远程仓库对应的地址
一 git创建版本库
两种方式
1 建立本地库并且初始化,建立远程库,将本地库和远程库联动。
-
git init
-
git branch -M master
将分支改名为master -
git add README.md
-
git commit -m "first commit"
-
建立远程分支库 git@github.com:ForgetAndRemember/wx_github_test1.git
-
为本地仓库添加远程仓库对应的地址
如果是sslgit remote add origin =git@github.com:ForgetAndRemember/wx_github_test1.git
如果不是ssl
git remote add origin http://git.cctvnc.cn/amsp/test4.git
-
git push -u origin master
将本地分支master推送到远程分支master上,并且跟踪(-u).
2 建立远程库,直接clone远程库到本地。
git clone git@github.com:ForgetAndRemember/wx_github_test1.git
2 缓存区太小
git config http.postBuffer 524288000
3 ignore文件无效
把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push -u origin master
4 ignore文件内容 —— 用于iOS
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
## Playgrounds
timeline.xctimeline
playground.xcworkspace
# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
.build/
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
Pods/
*.xcworkspace
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
二 git的多账户使用
1 检查是否已经存在SSH Key
1 取消全局配置
ls -al ~/.ssh
终端出现文件id_rsa.pub 或 id_dsa.pub,则表示该电脑已经存在SSH Key
终端未出现id_rsa.pub 或 id_dsa.pub文件,表示该电脑还没有配置SSH Key
git config --global users.name "XXX"
git config --global users.email "XX@XX.com"
2 创建对应托管平台的私钥和公共钥匙,比如gitlab
cd ~/.ssh
这是默认存在的三个文件
(1) 创建gitlab平台的钥匙,根据平台邮箱生成秘钥,命令如下:
ssh-keygen -t rsa -C "XXX@XX.xom"
输入完成后,会有如下提示:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xx/.ssh/id_rsa):
当看到如上指示的时候,则表示此时需要对生成的秘钥文件进行重命名,默认文件名是id_rsa。此时由于需要设置多个账户,在此需要对此文件进行重新命名以区分多个账户。在此示例取名:id_rsa_gitlab。之后设置密码可以直接按回车,直至秘钥生成,在秘钥目录下可以看到两个文件id_rsa_gitlab和id_rsa_gitlab.pub。
对于另外的Github的账户,可以采用相同的步骤进行生成秘钥id_rsa_github。
如果出现如下,代表根目录权限读写问题
Saving key "gitlab_wangxu" failed: Read-only file system
可以使用如下命令
sudo mount -uw /
(2) 将私钥添加到本地
ssh-add ~/.ssh/id_rsa_github
注意:
(3)公钥添加到网站
首先复制公钥,就是id_rsa_github.pub文件中的内容进行复制,打开gitlab并登陆,点击头像选择setting选项,在SSH and GPG keys项,将之前复制的内容粘贴进去,点击add SSH key添加key。
(4)对本地秘钥进行配置
由于添加了多个密钥文件,所以需要对这多个密钥进行管理。在.ssh目录下新建一个config文件
config的内容如下
# 网站的别名,随意取
Host github_wx
# 托管网站的域名
HostName github.com
#指定优先使用哪种方式验证,支持密码和秘钥验证方式
PreferredAuthentications publickey
# 托管网站上的用户名
User ForgetAndRemember
# 使用的密钥文件
IdentityFile ~/.ssh/id_rsa_github
Host gitlab_wx
HostName wdgit.mapbar.com
PreferredAuthentications publickey
User wangxu
IdentityFile ~/.ssh/id_rsa_gitlab
Host gitlab_wx_personal
HostName jihulab.com
PreferredAuthentications publickey
User xuwang
IdentityFile ~/.ssh/sid_rsa_gitlab_personal
(5)测验一下ssh秘钥是否能正确访问托管网站
ssh -T git@github_wx
提示成功以后,就可以在自己的项目中通过
注意:有时候即使测试成功,比如fvm update,也会提示找不到或者无权限,原因是代理过期需要重新添加,如下
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_github
git config users.name "wangxu"
git config users.email "XX@XX.com"
指定账号,并且无需密码。
三 git设置或修改Git(初始)分支名称
大致可分为下面几种情况:
1. 仓库没有初始化,即空文件夹
配置全局初始分支的默认名称,执行git init时,初始分支名就是默认配置的:
1. 使用全局的方式设置
git config --global init.defaultBranch <defaultBranch>
// 举例说明:
git config --global init.defaultBranch master
2. 或者使用下列方式针对单个项目设置:
git init -b <branch-name>
// 举例如下:
git init -b master
2. 仓库初始化,但并未推送
初始化后未推送,可以直接修改本地的分支名:
git branch -m <oldbranch> <newbranch>
// 举例说明
git branch -m main master
3. 仓库已经推送至远程仓库
第一步:先修改本地分支
git branch -m <oldbranch> <newbranch>
// 例子
git branch -m master main
第二步:删除远程分支在这里插入代码片
#要删除的分支可能是默认分支、受保护分支等,
#如果删除不成功,需要先在仓库管理平台设置,
#然后再执行命令。
git push origin --delete <branch-name>
// 例子
git push origin --delete master
第三步:推送本地分支至远程仓库
git push -u origin <branch-name>
// 例子:
git push -u origin kings