http://codeghar.wordpress.com/2007/12/06/manage-time-in-ubuntu-through-command-line/
dpkg-reconfigure tzdata
dpkg-reconfigure tzdata
mkdir -p
:mkdir -p foo
Note that this will also create any intermediate directories that don't exist; for instance,mkdir -p foo/bar/baz
will create directories foo
, foo/bar
, and foo/bar/baz
if they don't exist.rsync -rvnc --delete website/ laptop:projects/website/
man rsync|grep -e ' -n'
-n, --dry-run perform a trial run with no changes made
git branch -m old-branch new-branch
如果現在已經在 old-branch ,想要直接把名字改成 new-branch 的話,就輸入:
git branch -m new-branch
http://stackoverflow.com/questions/5086833/how-to-create-a-branch-without-adding-all-the-existing-files
git checkout --orphan branchname
git rm -rf .
After doing that you can create, add, and commit new files and the
resulting branch will have no common history with any other branches in
your project (unless you merge them at some point).git rm --cached filename
C:\some\dir\> git clone --local file:///C:/path/to/repo my_project
命令列模式顯示 tree
git log --graph --oneline --all
cherry-pick
is not the right tool for this. rebase
is. From the previous example, you'd want commit 76cada
and 62ecb3
in master
.feature
at the last commit you want, in this case 62ecb3
.git checkout -b newbranch 62ecb3
Next up, you rebase the newbranch
commit --onto master
. The 76cada^
indicates that you want to start from that specific commit.git rebase --onto master 76cada^
The result is that commits 76cada
through 62ecb3
are applied to master
.git reflog expire --expire-unreachable=0 --all
git gc --prune=0
git config --global core.autocrlf input# Set this setting on OSX or Linux git config --global core.autocrlf true# Set this setting on Windows
參考資料來源:
https://help.github.com/articles/dealing-with-line-endings
http://www.kernel.org/pub/software/scm/git/docs/git-config.html
從 git status 取得工作目錄中有修改過檔案清單
git status -s|egrep -v '^ D'|egrep -o '^ M.*'|egrep -o 'M .*'|egrep -o ' .*'|egrep -o '[^[:space:]].*'
git log --graph --oneline --all
git config --global color.ui auto
):* a9546a2 merge from topic back to master |\ | * 648ca35 merging master onto topic | |\ | * | 132ee2a first commit on topic branch * | | e7c863d commit on master after master was merged to topic | |/ |/| * | 37ad159 post-branch commit on master |/ * 6aafd7f second commit on master before branching * 4112403 initial commit on master
tar xvzf file.tar.gz tar xvzf file.tgz
PATH="/opt/lampp/bin:$PATH"
# Install curl and sudo
apt-get install curl sudo
# 3 steps in 1 command :)
curl https://raw.github.com/gitlabhq/gitlab-recipes/master/install/debian_ubuntu.sh | sh
Now you can go to Step 4curl https://raw.github.com/gitlabhq/gitlab-recipes/master/install/debian_ubuntu_aws.sh | sh
for more detailed instructions read the HOWTO section of the scriptsudo
is not installed for debian by default. You should install it with as root: apt-get update && apt-get upgrade && apt-get install sudosudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y wget curl gcc checkinstall libxml2-dev libxslt-dev sqlite3 libsqlite3-dev libcurl4-openssl-dev libreadline6-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev libicu-dev redis-server openssh-server git-core python-dev python-pip libyaml-dev postfix
# If you want to use MySQL:
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
tar xfvz ruby-1.9.3-p194.tar.gz
cd ruby-1.9.3-p194
./configure
make
sudo make install
sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git
Create user for gitlab:# ubuntu/debian
sudo adduser --disabled-login --gecos 'gitlab system' gitlab
Add your user to git group:sudo usermod -a -G git gitlab
Generate key:sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
Get gitolite source code:cd /home/git
sudo -H -u git git clone git://github.com/gitlabhq/gitolite /home/git/gitolite
Setup:sudo -u git sh -c 'echo -e "PATH=\$PATH:/home/git/bin\nexport PATH" >> /home/git/.profile'
sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; /home/git/gitolite/src/gl-system-install"
sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
sudo chmod 0444 /home/git/gitlab.pub
sudo -u git -H sed -i 's/0077/0007/g' /home/git/share/gitolite/conf/example.gitolite.rc
sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gl-setup -q /home/git/gitlab.pub"
Permissions:sudo chmod -R g+rwX /home/git/repositories/
sudo chown -R git:git /home/git/repositories/
# clone admin repo to add localhost to known_hosts
# & be sure your user has access to gitolite
sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin
# if succeed you can remove it
sudo rm -rf /tmp/gitolite-admin
IMPORTANT! If you cant clone gitolite-admin
repository - DONT PROCEED INSTALLATIONsudo gem install charlock_holmes --version '0.6.8'
sudo pip install pygments
sudo gem install bundler
cd /home/gitlab
sudo -H -u gitlab git clone -b stable git://github.com/gitlabhq/gitlabhq.git gitlab
cd gitlab
sudo -u gitlab mkdir tmp
# Rename config files
sudo -u gitlab cp config/gitlab.yml.example config/gitlab.yml
# SQLite
sudo -u gitlab cp config/database.yml.sqlite config/database.yml
# Or
# Mysql
# Install MySQL as directed in Step #1
# Login to MySQL
$ mysql -u root -p
# Create the gitlabhq production database
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
# Create the MySQL User change $password to a real password
mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '$password';
# Grant proper permissions to the MySQL User
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
# Exit MySQL Server and copy the example config, make sure to update username/password in config/database.yml
sudo -u gitlab cp config/database.yml.example config/database.yml
sudo -u gitlab -H bundle install --without development test --deployment
sudo -u gitlab bundle exec rake gitlab:app:setup RAILS_ENV=production
sudo cp ./lib/hooks/post-receive /home/git/share/gitolite/hooks/common/post-receive
sudo chown git:git /home/git/share/gitolite/hooks/common/post-receive
Checking status:sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production
# OUTPUT EXAMPLE
Starting diagnostic
config/database.yml............exists
config/gitlab.yml............exists
/home/git/repositories/............exists
/home/git/repositories/ is writable?............YES
remote: Counting objects: 603, done.
remote: Compressing objects: 100% (466/466), done.
remote: Total 603 (delta 174), reused 0 (delta 0)
Receiving objects: 100% (603/603), 53.29 KiB, done.
Resolving deltas: 100% (174/174), done.
Can clone gitolite-admin?............YES
UMASK for .gitolite.rc is 0007? ............YES
/home/git/share/gitolite/hooks/common/post-receive exists? ............YES
If you got all YES - congrats! You can go to next step.# For test purposes
sudo -u gitlab bundle exec rails s -e production
# As daemon
sudo -u gitlab bundle exec rails s -e production -d
You can login via web using admin generated with setup:admin@local.host
5iveL!fe
# Manually
sudo -u gitlab bundle exec rake environment resque:work QUEUE=* RAILS_ENV=production BACKGROUND=yes
# Gitlab start script
sudo -u gitlab ./resque.sh
# if you run this as root /home/gitlab/gitlab/tmp/pids/resque_worker.pid will be owned by root
# causing the resque worker not to start via init script on next boot/service restart
*Ok - we have a working application now. *
*But keep going - there are some thing that should be done *sudo apt-get install nginx
cd /home/gitlab/gitlab
sudo -u gitlab cp config/unicorn.rb.orig config/unicorn.rb
sudo -u gitlab bundle exec unicorn_rails -c config/unicorn.rb -E production -D
Add GitLab to nginx sites & change with your host specific settingssudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/nginx/gitlab -P /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
# Change **YOUR_SERVER_IP** and **YOUR_SERVER_FQDN**
# to the IP address and fully-qualified domain name
# of the host serving GitLab.
sudo vim /etc/nginx/sites-enabled/gitlab
Restart nginx:/etc/init.d/nginx restart
Create init script in /etc/init.d/gitlab:sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab -P /etc/init.d/
Adding permission:sudo chmod +x /etc/init.d/gitlab
Gitlab autostart:sudo update-rc.d gitlab defaults
Now you can start/restart/stop gitlab like:sudo /etc/init.d/gitlab restart
ssh://d68fbe50@g.s:29418/symfonyproject.git
)git clone ssh://d68fbe50@g.s:29418/symfonyproject.git
WRONG
```---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20120413"
AAAAB3NzaC1yc2EAAAABJQAAAIEAwTZaJGO3Fnmu25aHVZilXs1N1ZY4ZWH3K210
...
Sfsv/vkHQjmGDlusesk71MTJyO3cGQfZA/kfmktGoDLe1C7uyrCgLwMrCAXK6zD6
JSTKers=
---- END SSH2 PUBLIC KEY ----