?xml version="1.0" encoding="UTF-8"?
cd 路径
git init
git add .
git commit -m "第一次提交”
git remote add origin “https”
git push -u origin master
目录
题主已经打算卸载SourceTree,本文主要讲解git使用三个方面:
1.构建协作环境(将已有代码放到git仓库上面供别人分享,将别人放在git上面的代码clone下来)
2.git常用命令(包括:代码的增删改查等操作)
3.忽略文件.gitignore的配置
一、git从本地文件链接到远程仓库的方法(代码在本地,远程仓库为空)
公司项目协作是需要配置ssh key的,所有操作的前提是你已经配置了ssh key。
具体命令如下:
cd existing_folder//进入到工程文件夹
rm -rf.git //先清除.git文件
git init //再重置
git remote add origin xxxxxxxxx //链接到远程分支xxxxxxxxx(git上面的仓库地址)
git add . //暂存所有文件
commit之前设置下名字和邮箱 global为全局 local为本次
git config --global user.name"瓜皮"
git config --global user.email"guapi@yaomaitong.cn"
git commit 需要输入注释说明
git commit -m'description'
git push -u origin xxxx //最后push到xxxx分支
等待完成之后到sourceTree里面去从添加已存在的本地仓库
由于公司是重建的git工程,push的时候报了个错,这里记录一下(因为服务重建,.ssh下的known_hosts里面的hostkey改变了,所以vim编辑进入,删除以前的key即可)
zjmdeMBP:zhujiamin PRO$ gitpush-u origin master
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a hostkeyhas just been changed.
The fingerprintforthe ECDSAkeysent by the remote host is
SHA256:2pWcmnQ4P38EUSSXNp89uG0um/K01bz/mWMJC3TMj2M.
Please contact yoursystemadministrator.
Add correct hostkeyin /Users/a123/.ssh/known_hosts to get rid of this message.
Offending ECDSAkeyin /Users/a123/.ssh/known_hosts:3
ECDSA hostkeyforgit.yaomaitong.nethas changedandyou have requested strict checking.
Hostkeyverification failed.
fatal: Couldnotread from remote repository.
Pleasemakesure you have the correct access rights
andthe repository exists.
二、git将远程仓库clone到本地的方法(代码在远程仓库,本地啥也没有)
mkdiriosProject //在当前目录创建一个空文件夹 (也可手动创建或者直接使用已有的文件夹)
cdiosProject//进入到你想要放置工程的空文件夹
rm-rf .git //先删除可能隐藏的git (个人习惯而已)
git clone xxxxxxxx //clone远程git仓库到本地
clone成功的样子:
zjmdeMacBook-Pro:restoreOldiOS PRO$ rm -rf .git
zjmdeMacBook-Pro:restoreOldiOS PRO$ git clone git@git.xxxxxx.net:xxx/ios.git
Cloning into'ios'...
remote:Countingobjects:5611, done.
remote:Compressingobjects:100% (1914/1914), done.
remote:Total5611(delta3657), reused5611(delta3657)
Receivingobjects:100% (5611/5611), 107.30 MiB | 5.44 MiB/s, done.
Resolvingdeltas:100% (3657/3657), done.
Checking connectivity... done.
clone成功之后应该在进入工程文件夹里面,本地创建几个远程必须的分支,主要用到的命令是:
git branch -a查看所有分支
git checkout -bxxxx origin/xxxx //创建并切换到想要创建的本地分支
操作成功的样子:
zjmdeMacBook-Pro:restoreOldiOSPRO$ls //远程文件夹为ios
ios
zjmdeMacBook-Pro:restoreOldiOSPRO$cdios //进入
zjmdeMacBook-Pro:iosPRO$ls
Medicine MedicineTests Pods
Medicine.xcodeproj Podfile README.md
Medicine.xcworkspace Podfile.lock
zjmdeMacBook-Pro:iosPRO$ git branch //查看已有分支(只能看到已存在的分支)
* master
zjmdeMacBook-Pro:iosPRO$ git branch -a //查看所有分支,可以看到远程有好几个分支
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/feature_newLogin
remotes/origin/master
zjmdeMacBook-Pro:iosPRO$ git checkout -b develop origin/develop //挑选本地需要的分支进行创建
Branch developsetup to track remote branch develop from origin.
Switched to a new branch 'develop'
zjmdeMacBook-Pro:iosPRO$ git checkout -b feature_newLogin origin/feature_newLogin
Branch feature_newLoginsetup to track remote branch feature_newLogin from origin.
Switched to a new branch 'feature_newLogin'
zjmdeMacBook-Pro:iosPRO$ git status
Onbranch feature_newLogin
Your branch is up-to-date with 'origin/feature_newLogin'.
nothing to commit, working directory clean
三、git常用命令
1.分支操作
git status 查看当前所在分支和更改内容
gitbranch查看所有分支
gitbranchxxx 新建某分支
git checkout xxx 切换到某分支
git checkout -bxxx 创建并切换到某分支
git pulloriginxxx 拉取xxx分支
git pushoriginxxx 推送同步xxx分支
git merge xxx 合并分支 (一般需要先切换到目的分支,然后merge想要merge的分支)
2.提交修改
git status//查看改动
gitaddxxx.m//暂存xxx.m文件
gitadd.//暂存所有改动
git rm xxx//删除xxx文件
git commit -m'修改了xx功能'//添加注释
git push origin xxxx //push 注意当前所在网络是否允许push
git commit--mend 修改最近一次提交的代码(这里会进入vim编辑器去修改)
3.查看某个文件的修改历史
git log--pretty=oneline 文件名 //需要进入该文件所在的文件夹
这里必须要进入到.h/.m文件所在的文件夹下,并且只能看到每次commit产生的hash码
例如:
zjmdeMBP:pinyin PRO$ gitlog--pretty=oneline ChineseString.h
f9f280d0df7907af97f8c88be58e9eb14cabdc93 去除无效的代码
7146065685ccc243bf9ca24ce67de0bf4277f7bc 完善工程
db2d150806a8583fa006e105c4461f977507d341first
想要看到详细情形还需要使用 gitshow 才能看到该次commit所做的修改内容及Author 和Date;
4.撤销改动
a.修改最近一次commit的内容
gitcommit--amend或gitcommit--amend-m'注释信息'
b.commit前发现某个文件没有必要改动,我们需要让该文件回到未改动的状态
git checkout--
c.本地已经执行提交操作,但是还没有push,想要撤销某文件的更改
git reset<文件名>//缺省文件名时默认取消上次提交的所有内容,提交的内容回到未暂存状态
git reset --hard<文件名>//缺省文件名时默认取消上次提交的所有内容,并且修改的内容也全部重置
5.回滚代码到某次提交的节点
git log --oneline //查看所有的commit历史,显示每次commit生成的hash码的前七位和注释信息,例如:
zjmdeMBP:ios PRO$ gitlog--oneline
a674e9f AFN更新至3.1.0
345db82 消息闪退try..catch;
fb33370 更新cocoaPods及第三方库;
01931f7 忘记密码布局位置调整;
08ce469 增加友盟计数事件;
git revert xxxx //xxxx为某次commit的hash码,例如我想回滚到AFN更新前,命令如下:
gitreverta674e9f
执行之后进入vim编辑,填写注释后保存退出,然后add、commit、push就完成回滚了。
题主执行这一操作的时候,恰好电脑内存满了。。。所有报了下面这个错,记录一下
".git/COMMIT_EDITMSG"E509: Cannotcreatebackupfile(add!tooverride)
编辑完回滚信息wq居然一直提示这个错误退不出去,一查发现是因为电脑内存满了,清理一些内容之后就OK了。
四、.gitignore的创建和使用
正常情况下我们并不需要将工程里面的所有内容都提交到git远程仓库,并且有些信息(比如那些每次编译都会变化的信息)会时常出现在UnCommitted changes里面,如下图:
所以我们需要一个.gitignore来帮助我们过滤这些不必要的信息;
事实上为了节省服务器空间,一些项目也会过滤掉pods管理的第三方库,只上传Podfile相关信息,下面的代码没有过滤pod文件,各位看官按需自己添加。
1.写在.gitignore里面的代码:
# 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
*.xccheckout
*.moved-aside
*.xcuserstate
2.创建.gitignore文件
我所知道的两种创建方法如下:
方法a:
cd existing_folder//进入到工程文件夹
touch.gitignore//创建一个.gitignore的文件
vim.gitignore//使用vim编辑器编辑.gitignore文件(也可以使用方法b后半部分的方法去编辑)
方法b:
当你用文本编辑器去编辑一个文件后保存为.gitignore的时候,系统会告诉你"Names thatbeginwitha dot “.”arereservedforthe system. Ifyou decidetogoaheadanduseanamewhich beginswitha dot thefilewill be hidden."因为以.开头的文件为系统保留,一定要创建的话该文件将会被隐藏。
于是我们可以用文本编辑器将忽略文件的代码写好后保存到项目工程目录下并命名为.gitignore文件(忽略系统提示),虽然它默认被系统隐藏,但是将你的工程文件夹拉入一个文本编辑器, 如下图所示, 本文示例使用的Sublime Text, 依然能够看到并编辑的!
如果你已经将一些本该忽略的文件提交到git服务器, 那么配置好.gitignore之后会发现之前总是出现的用户信息依然出现在Uncommitted changes中, 原因是因为.ignore是后来加进来的local cache里面记录的这个文件是不忽略的, 所以需要进行缓存清除, 这个时候你只需要将进入该工程目录下, 执行删除缓存中的文件后提交即可:
注意缓存路径就是出现在Uncommitted changes中的文件路径, 请确认路径正确。
$git rm --cached 你的工程名.xcodeproj/project.xcworkspace/xcuserdata/你的电脑名.xcuserdatad/UserInterfaceState.xcuserstate
$git commit -m'注释信息'
$git push origin 分支名
网友评论